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的内容抽为子组件。



相关文章
|
8天前
|
前端开发 JavaScript UED
React 图标库使用指南
本文详细介绍如何在 React 项目中使用 `react-icons` 等图标库,涵盖环境搭建、基础使用、常见问题与易错点、高级用法等内容,并通过代码案例进行说明。适合初学者和进阶开发者参考。
30 8
|
1月前
|
前端开发 JavaScript API
React开发需要了解的10个库
本文首发于微信公众号“前端徐徐”,介绍了React及其常用库。React是由Meta开发的JavaScript库,用于构建动态用户界面,广泛应用于Facebook、Instagram等知名网站。文章详细讲解了Axios、Formik、React Helmet、React-Redux、React Router DOM、Dotenv、ESLint、Storybook、Framer Motion和React Bootstrap等库的使用方法和应用场景,帮助开发者提升开发效率和代码质量。
122 4
React开发需要了解的10个库
|
2月前
|
JavaScript 前端开发 开发者
React 的正确使用方法:ref 篇
你真的用对了 useRef 吗?在与 TypeScript 一起使用、以及撰写组件库的情况下,你的写法能够避开以下所有场景的坑吗?
|
1月前
|
资源调度 前端开发 JavaScript
React中classnames库使用
【10月更文挑战第7天】
|
25天前
|
资源调度 前端开发 JavaScript
React 测试库 React Testing Library
【10月更文挑战第22天】本文介绍了 React Testing Library 的基本概念和使用方法,包括安装、基本用法、常见问题及解决方法。通过代码案例详细解释了如何测试 React 组件,帮助开发者提高应用质量和稳定性。
38 0
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库实战案例
这篇文章介绍了在React应用中使用Axios和Fetch库进行Ajax请求的实战案例,展示了如何通过这些库发送GET和POST请求,并处理响应和错误。
59 10
React技术栈-react使用的Ajax请求库实战案例
|
2月前
|
前端开发
React技术栈-react使用的Ajax请求库用户搜索案例
这篇文章展示了一个React技术栈中使用Ajax请求库(如axios)进行用户搜索的实战案例,包括React组件的结构、状态管理以及如何通过Ajax请求获取并展示GitHub用户数据。
33 7
React技术栈-react使用的Ajax请求库用户搜索案例
|
2月前
|
资源调度 JavaScript 前端开发
使用vite+react+ts+Ant Design开发后台管理项目(二)
使用vite+react+ts+Ant Design开发后台管理项目(二)
|
3月前
|
存储 前端开发 JavaScript
|
4月前
|
存储 前端开发 JavaScript
前端框架与库 - React基础:组件、Props、State
【7月更文挑战第12天】React是JavaScript库,专注UI构建,基于组件化。组件是UI模块,可函数式或类定义。Props是组件间安全传递数据的只读参数,用defaultProps和propTypes保证正确性。State则是组件内部可变数据,用于驱动更新。使用setState()确保正确变更和渲染。了解并妥善处理这些概念是高效React开发的基础。
73 7
下一篇
无影云桌面