ant design组件库在React中的使用方法和问题总结

827 阅读2分钟

1. 弹窗销毁后再打开,原来的值仍存在,如何销毁弹窗内容?

解决: 加destroyOnClose 属性,关闭时销毁子元素。再次打开内容就清空了~

<Modal
      title="新增对账流水"
      visible={visible}
      onOk={() => {
        formRef.current.handleSubmit();
      }}
      onCancel={onClose}
      okText="确认"
      cancelText="取消"
      width={800}
      destroyOnClose // 关闭时销毁子元素
   >

如果是使用antd中的form,上述方法不起效时,将form重置:

 form.resetFields(); // hooks中
 或者
 this.props.form.resetFields(); // class中

如果有ref,可以这样:this.formRef.current.resetFields();

2. 在Select组件options中找到目标项的value。

通常下拉的结构是:

options = [ { id:1,name:'zhangsan' },...]
findName=(val,options)=>{
const targetOption = options.find(item=> item.value=>val);
return targetOption.name;
}

3.以前文章:React学习之antd中getFieldDecorator的使用

React学习之antd中getFieldDecorator的使用

4. Upload上传文件(重要)!

在Upload组件中经常用的就是受控的显示和上传。 我经常遇到的是这种情况:完全受控组件。 这样一定要记得:

  1. 设置fileList属性。它决定了文件列表默认显示什么,以及上传后显示什么!
  2. onChange方法的其中两个重要且常用的参数:file、fileList。参数解释如下:
file:当前操作的文件对象。

{
   uid: 'uid',      // 文件唯一标识,建议设置为负数,防止和内部产生的 id 冲突
   name: 'xx.png'   // 文件名
   status: 'done', // 状态有:uploading done error removed,被 beforeUpload 拦截的文件没有 status 属性
   response: '{"status": "success"}', // 服务端响应内容
   linkProps: '{"download": "image"}', // 下载链接额外的 HTML 属性
}
fileList: 当前的文件列表。
 render() {
    const props = {
      action: 'https://xxxxx.com',
      onChange: ({ file, fileList})=>{...},
      multiple: true,
    };
    return (
      <Upload {...props} fileList={this.state.fileList}>
        <Button icon={<UploadOutlined />}>Upload</Button>
      </Upload>
    );
  }

upload上传文件 props就是文件上传的各种属性,不熟的话要自己点链接看官网。 API参考:Ant Design 的 Upload

5. Tab页切换,数据没刷新?

场景:两个Tab页,每个里面都有表格,切换Tab,给Table赋值DataSource时,数据正确但页面未刷新。 我的Tab内容没有抽出组件,在一个文件中写的。 原因: React需要唯一识别符,没有唯一标识符。 解决:给每一个Table加key;将Tab的内容抽为子组件。

补充知识: React中Key的说明,链接:zh-hans.reactjs.org/docs/lists-…

开发在继续,持续更新中……