react中form.setFieldvalue数据回填时 value和text不对应的问题及解决方法

 更新时间:2023年07月18日 14:39:05   作者:刘小蟲_  
这篇文章主要介绍了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类组件和函数组件对比-Hooks的简介

    React类组件和函数组件对比-Hooks的简介

    Hook 是 React 16.8 的新增特性,它可以让我们在不编写class的情况下, 使用state以及其他的React特性(比如生命周期,这篇文章主要介绍了React类组件和函数组件对比-Hooks的介绍及初体验,需要的朋友可以参考下
    2022-11-11
  • 通过示例源码解读React首次渲染流程

    通过示例源码解读React首次渲染流程

    这篇文章主要为大家通过示例源码解读React的首次渲染流程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 详解在React-Native中持久化redux数据

    详解在React-Native中持久化redux数据

    这篇文章主要介绍了在React-Native中持久化redux数据,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • React使用Echarts/Ant-design-charts的案例代码

    React使用Echarts/Ant-design-charts的案例代码

    这篇文章主要介绍了React使用Echarts/Ant-design-charts的实例代码,本文通过实例代码给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • react实现浏览器自动刷新的示例代码

    react实现浏览器自动刷新的示例代码

    这篇文章主要介绍了react实现浏览器自动刷新的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • React UI组件库之快速实现antd的按需引入和自定义主题

    React UI组件库之快速实现antd的按需引入和自定义主题

    react入门学习告一段路,下面这篇文章主要给大家介绍了关于React UI组件库之快速实现antd的按需引入和自定义主题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 30分钟精通React今年最劲爆的新特性——React Hooks

    30分钟精通React今年最劲爆的新特性——React Hooks

    这篇文章主要介绍了30分钟精通React今年最劲爆的新特性——React Hooks,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Docker部署SpringBoot项目到云服务器的实现步骤

    Docker部署SpringBoot项目到云服务器的实现步骤

    Docker作为一种轻量级的容器化技术,为开发者提供了快速、便捷的部署方案,本文主要介绍了Docker部署SpringBoot项目到云服务器,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • React Native 截屏组件的示例代码

    React Native 截屏组件的示例代码

    本篇文章主要介绍了React Native 截屏组件的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • React 并发功能体验(前端的并发模式)

    React 并发功能体验(前端的并发模式)

    React 是由 Facebook 软件工程师 Jordan Walke 创建,React 的第一个版本在七年前问世,现在,Facebook 负责维护,本文给大家介绍React 并发功能体验前端并发模式的问题,感兴趣的朋友跟随小编一起看看吧
    2021-07-07

最新评论