react中form.setFieldvalue数据回填时 value和text不对应的问题及解决方法
react中form.setFieldvalue数据回填时 value和text不对应的问题
react中进入表单的编辑页面时 需要将之前新建的数据回填,如果是{}的形式 需要一一对应,如果是[]的形式 需要单独的值意思是不接受数组对象也就是[{},{},{}]的形式解决方法:借用对象,用key去找value
// 进入编辑页面 多选框的回填(转换为对象的形式,用key来找value)
let reversedynamicDataObj = {};
let result = [];
Data.relatedProjects.map((i) => {
JSON.stringify(i.id)
.split(',')
.map((ele) => {
reversedynamicDataObj[ele] = {
value: { name: i.name, id: ele },
key: ele,
};
result.push(reversedynamicDataObj[ele]['key']);
});
});
Data.relatedProjectIds = result;
form.setFieldsValue(Data);在react中对自己的组件使用setFieldsValue
setFieldsValue的用法
setFieldsValue是antd form的一个api,其作用是对指定的已使用from包裹的表单进行value设置。那么所以它的功能也很简单,那就是给指定的input设置value。如下所示:
import React from "react";
import { Form, Input } from 'antd';
class TestForm extends React.Component {
componentDidMount(){
const { setFieldsValue } = this.props.form;
// 这里就能实现指定表单设置value
setTimeout(()=>{
setFieldsValue({"username": "Tom"})
},5000)
}
render() {
const { getFieldDecorator } = this.props.form;
return (
<Form >
<Form.Item>
{getFieldDecorator('username', {})(<Input />)}
</Form.Item>
</Form>
);
}
}
export default Form.create()(TestForm)问题
那么假如把
{getFieldDecorator('username', {})(<Input />)}换成
{getFieldDecorator('username', {})(<TestInput />)}setFieldsValue 设置的value去哪了?相信聪明的你一眼就看透了,自然是在TestInput上面。假如TestInput是我们自定义的组件,那么我们则可以在props中找value这个属性,那么假如我们的Input是自定义的input组件,我们可以这么写
import React from "react";
import { Input } from 'antd';
class TestInput extends React.Component {
state = {
value: ""
}
componentWillReceiveProps(nextProps){
if(nextProps.value){
this.setState({
value: nextProps.value
})
}
}
render() {
return (
<div >
<Input value={this.state.value}/>
</div>
);
}
}
export default TestInput这样,我们就能使用setFieldsValue设置自定义的组件了。
到此这篇关于react中form.setFieldvalue数据回填时 value和text不对应的问题的文章就介绍到这了,更多相关react中form.setFieldvalue数据回填内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
React使用useLayoutEffect解决操作DOM页面闪烁问题的方法
本文介绍了useLayoutEffect解决操作DOM页面闪烁问题,useLayoutEffect是React中用于处理副作用的Hook之一,它与 useEffect功能相似,但执行时机有着显著差异,useLayoutEffect会在所有的DOM变更之后同步执行,这一特性使其特别适合用于需要基于最新DOM结构进行操作的场景2025-12-12
React Native 使用Fetch发送网络请求的示例代码
本篇文章主要介绍了React Native 使用Fetch发送网络请求的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-12-12
React的createElement和render手写实现示例
这篇文章主要为大家介绍了React的createElement和render手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-08-08
React中的useState和setState的执行机制详解
这篇文章主要介绍了React中的useState和setState的执行机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-03-03


最新评论