美文网首页
问题整理

问题整理

作者: 凌云_ccd7 | 来源:发表于2019-03-21 11:07 被阅读0次

1. 请求数据失败后页面就一直报错,需强刷才能继续进行下去

解决方案: try catch

2. 在中chrome中记住密码然后密码框会自动记住密码,解决方案

    已开始设置密码框的type="text" ,在得焦的时候,把其type改成password即可

3. .文本域自动撑开

通过获取行高来改变文本域的高度

4. 识别html 

    dangerouslySetInnerHTML

5. select call put 用法

    select 可以获取到 state 中文件的值  let param = yield select(state=.{return state.common.param}) // common model的命名 

    call  const res = yield call('请求借口','参数')

    put   yield put({type:'reducers保存文件名称',payload:'参数'}) // 保存数据

            yield put({type:'当前文件下函数名称',payload:'参数'}) // 请求当前modal的函数

6. react 可拖拽弹窗

import React from 'react';

import {Button, Icon} from 'antd';

import PropTypes from 'prop-types';

import styles from './drag.less';

import TrialModal from "./trialModal";

class DragModal extends React.Component {

  constructor(props) {

    super(props);

    const {visible} = this.props;

    const {clientWidth, clientHeight} = document.documentElement;

    this.state = {

      visible: (visible !== '' && visible !== null) ? visible : false,

      clientWidth,

      clientHeight,

      pageX: (clientWidth-1000) / 2,

      pageY: '10vh',

      moving: false,

    }

  }

  componentWillReceiveProps({visible}) {

    if (visible !== '' && visible !== null) {

      this.setState({visible});

    }

  }

  componentDidMount() {

    this.resize();

    window.addEventListener('resize', this.resize);

  }

  resize = () => {

    const {clientWidth, clientHeight} = document.documentElement;

    // console.log(`监听到窗口大小变化 宽:${clientWidth} 高:${clientHeight}`)

    const modal = document.getElementById("modal");

    if (modal) {

      const pageY = (clientHeight - modal.offsetHeight) / 4.5;

      const pageX = (clientWidth - modal.offsetWidth) / 2;

      this.setState({ clientWidth,clientHeight, pageX, pageY})

    }

  }

  onCancel = () => {

    const {onCancel} = this.props;

    if (onCancel) {

      onCancel();

    } else {

      this.setState({visible: false})

    }

  }

  open = () => {

    this.setState({visible: true});

  }

  // 获取鼠标点击title时的坐标、title的坐标以及两者的位移

  getPosition = (e) => {

    // 标题DOM元素titleDom

    const titleDom = e.target;

    // titleDom的坐标

    const X = titleDom.getBoundingClientRect().left;

    const Y = titleDom.getBoundingClientRect().top;

    // 鼠标点击的坐标

    let mouseX = 0, mouseY = 0;

    if (e.pageX || e.pageY) {  //ff,chrome等浏览器

      mouseX = e.pageX;

      mouseY = e.pageY;

    } else {

      mouseX = e.clientX + document.body.scrollLeft - document.body.clientLeft;

      mouseY = e.clientY + document.body.scrollTop - document.body.clientTop;

    }

    // 鼠标点击位置与modal的位移

    const diffX = mouseX - X;

    const diffY = mouseY - Y;

    return {X, Y, mouseX, mouseY, diffX, diffY}

  }

  /**

  * 鼠标按下,设置modal状态为可移动,并注册鼠标移动事件

  * 计算鼠标按下时,指针所在位置与modal位置以及两者的差值

  **/

  onMouseDown = (e) => {

    const position = this.getPosition(e);

    window.onmousemove = this.onMouseMove;

    this.setState({moving: true, diffX: position.diffX, diffY: position.diffY});

  }

  // 松开鼠标,设置modal状态为不可移动,

  onMouseUp = (e) => {

    this.setState({moving: false});

  }

  // 鼠标移动重新设置modal的位置

  onMouseMove = (e) => {

    const {moving, diffX, diffY} = this.state;

    if (moving) {

      // 获取鼠标位置数据

      const position = this.getPosition(e);

      // 计算modal应该随鼠标移动到的坐标

      const x = position.mouseX - diffX;

      const y = position.mouseY - diffY;

      // 窗口大小

      const {clientWidth, clientHeight} = document.documentElement;

      const modal = document.getElementById("modal");

      if (modal) {

        // 计算modal坐标的最大值

        const maxHeight = clientHeight - modal.offsetHeight;

        const maxWidth = clientWidth - modal.offsetWidth;

        // 判断得出modal的最终位置,不得超出浏览器可见窗口

        const left = x > 0 ? (x < maxWidth ? x : maxWidth) : 0;

        const top = y > 0 ? (y < maxHeight ? y : maxHeight) : 0;

        this.setState({pageX: left, pageY: top})

      }

    }

  }

  render() {

    const { width,visible, title,dataTrialResult,form,dataTrial,trialData} = this.props;

    const { clientWidth, clientHeight, pageX, pageY} = this.state;

    const modal = (

      <div className={styles.custom_modal_mask} style={{width: clientWidth, height: clientHeight}}>

        <div

          id="modal"

          className={styles.custom_modal_win}

          style={{

            width:1000,

            height: 500,

            marginLeft: pageX,

            marginTop: pageY,

          }}>

          <div

            className={styles.custom_modal_header}

            onMouseDown={this.onMouseDown}

            onMouseUp={this.onMouseUp}

          >

            {title ? title : null}

            <div className={styles.custom_modal_header_close} onClick={this.props.handleCancelTrial}>

              <Icon type="close"/>

            </div>

          </div>

          <div className={styles.custom_modal_content}>

            <TrialModal form={form}

                        trialData={trialData}

                        dataTrialResult={dataTrialResult}

                        dataTrial={dataTrial}

                        handleChangeTrial={this.props.handleChangeTrial}

                        handleChangeSelectTrual={this.props.handleChangeSelectTrual}

                        handleChangeDateTiral={this.props.handleChangeDateTiral}

                        handleClickTrialBtn={this.props.handleClickTrialBtn}></TrialModal>

          </div>

          {/*<div className={styles.custom_modal_footer}>

            <div className={styles.custom_modal_footer_inner}>

              <Button onClick={this.onCancel}>

                {cancelText ? cancelText : '取消'}

              </Button>

              <Button type="primary" onClick={onOk} style={{marginLeft: '10px'}}>

                {okText ? okText : '确定'}

              </Button>

            </div>

          </div>*/}

        </div>

      </div>

    )

    return <div>{!visible ? null : modal}</div>

  }

}

DragModal.propTypes = {

  visible: PropTypes.bool,

  title: PropTypes.string,

  width: PropTypes.any,

  height: PropTypes.any,

  closable: PropTypes.bool,

  okText: PropTypes.string,

  cancelText: PropTypes.string,

  onCancel: PropTypes.func,

  onOk: PropTypes.func,

  onOkLoading: PropTypes.bool,

}

export default DragModal;

7. setFieldsValue使用

            myForm.setFieldsValue({

                  ['vc_centerno']: paramData.convertMap[i].VC_CENTERNO,

                });

8.  setFields 使用

        myForm.setFields({

                VC_WORKTIME: {

                  value: '',

                }

              });

相关文章

  • 问题整理

    说明:需要回顾或者处理的问题记录 1、SVN:获取项目失败,访问被禁止。-没有写完整的地址 http://xxx....

  • 问题整理

    案例1.我的孩子每天早上不愿意起床,起床了也不愿意刷牙洗脸,就想要玩玩具,该怎么办? 案例2.双胞胎的妹妹特别的怕...

  • 问题整理

    1、代理的效率高,还是KVO的效率高? 代理的效率高,因为代理不会动态的生成类 2、怎么拿到一个对象的类对象,怎么...

  • 问题整理

    1. 请求数据失败后页面就一直报错,需强刷才能继续进行下去 解决方案: try catch 2.在中chrome中...

  • 整理问题

    分清主次 整理思路

  • 问题整理

    怎样保证接口幂等性 @transational 有没有遇到失效的场景

  • 问题整理

    Linux基础 1.请用top命令找到当前占用最多的进程 运行top命令后,在键盘上按下大写的“M”字母后,在首行...

  • 问题整理

    1. 在同一张UMAP上展示细胞分群情况 问题:如果单独取出cluster再做dimplot,就会出现UMAP图坐...

  • 问题整理

    前端工程化的理解 【流程+规范+自动化等】 webpack(项目打包) 用过哪些loader和plugin;loa...

  • 问题整理

    题目有没有看对,套路有没有对 1、收尾工作对内:更新组织资产,更新经验教训登记册对外:获得客户对项目收尾工作的批准...

网友评论

      本文标题:问题整理

      本文链接:https://www.haomeiwen.com/subject/gzafvqtx.html