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

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

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

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

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

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

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

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

通常下拉的结构是:

options= [ { id:1,name:'zhangsan' },...]
<Selectstyle={{ width: '100%' }}
placeholder="请选择"allowCleardisabled={!!detailData?.id}
>   {options?.map(item=> (
<Optionvalue={item.id} key={item.name}>      {item.name}
</Option>  ))}
</Select>
findName=(val,options)=>{
consttargetOption=options.find(item=>item.value=>val);
returntargetOption.name;
}

3.React学习之antd中读取与设置表单值

1.antd基础组件用法

const {
form: { getFieldDecorator },
  } =this.props;
<FormItemlabel="开始卡号" {...formLayout}>  {getFieldDecorator('startNumber', {
rules: [{ required: true, message: '请输入开始卡号' }],
initialValue: record&&record.startNumber?record.startNumber : '',
  })(<Inputplaceholder="请输入开始卡号"style={{ width: '100%' }} />)}</FormItem>// 获取form表单的值form.validateFields((err, fieldsValue) => {
if (err) return;
console.log("fieldsValue",fieldsValue)
 });
<Formref={this.formRef}><FormItemlabel="摘要:"name="remark"><Inputplaceholder="请输入摘要"style={{ width: '100%' }} allowClear/></FormItem></Form>// 设置值this.formRef.current?.setFieldsValue({
remark: 'XXX'),
});
// 获取值constvalue=this.formRef.current?.getFieldValue();

2.自定义组件用法

// 父组件<FormItemlabel=""  {...bigInputLayout}
name="tagContent"initialValue={{ items: [''], checkedItems: [], checkedTexts: [] }}
valuePropName="tagContent"><PriceTagContent// 自定义组件getPriceTagRef={(ref) => {
this.priceTagRef=ref;
  }} 
/></FormItem>// 子组件addItemList=()=>{
// 表单自定义子组件会加入onchange方法const { onChange } =this.props;
constnewCheckedTexts= [...checkedTexts];
constitem= [];
constcheckedItems= [];
// 通过onchange方法更新父组件表单中的tagContentonChange({ items: item, checkedTexts: newCheckedTexts, checkedItems });  
}
<InputallowCleardefaultValue={record.text}
value={record?.text}
// disabled={isDiss}onChange={(e) => {
this.addItemList(record, e.target.value);
  }}
/>

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() {
constprops= {
action: 'https://xxxxx.com',
onChange: ({ file, fileList})=>{...},
multiple: true,
    };
return (
<Upload {...props} fileList={this.state.fileList}><Buttonicon={<UploadOutlined/>}>Upload</Button></Upload>    );
  }

image.png

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

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

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



相关文章
|
3月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
40 0
|
1月前
|
前端开发 Android开发 iOS开发
应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
【2月更文挑战第31天】应用研发平台EMAS使用 aliyun-react-native-push 库接入推送和辅助通道,推送都可以收到,但是在App切到后台或者杀掉进程之后就收不到推送了,是需要配置什么吗?
30 2
|
1月前
|
前端开发 JavaScript 安全
使用React、TypeScript和Ant Design构建现代化前端应用
使用React、TypeScript和Ant Design构建现代化前端应用
24 0
|
2月前
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
15 1
|
2月前
|
前端开发 应用服务中间件 数据库
react服务端组件
react服务端组件
21 0
|
2月前
|
前端开发 JavaScript
快速上手React:从概述到组件与事件处理
快速上手React:从概述到组件与事件处理
|
3月前
|
前端开发 JavaScript API
React组件生命周期
React组件生命周期
74 1
|
3月前
|
资源调度 前端开发 JavaScript
React组件
React组件
41 0
|
3月前
|
存储 前端开发 JavaScript
探索 React Hooks 的世界:如何构建出色的组件(下)
探索 React Hooks 的世界:如何构建出色的组件(下)
探索 React Hooks 的世界:如何构建出色的组件(下)
|
3月前
|
缓存 前端开发 API
探索 React Hooks 的世界:如何构建出色的组件(上)
探索 React Hooks 的世界:如何构建出色的组件(上)
探索 React Hooks 的世界:如何构建出色的组件(上)