react中form.setFieldvalue數(shù)據(jù)回填時(shí) value和text不對(duì)應(yīng)的問(wèn)題及解決方法
react中form.setFieldvalue數(shù)據(jù)回填時(shí) value和text不對(duì)應(yīng)的問(wèn)題
react中進(jìn)入表單的編輯頁(yè)面時(shí) 需要將之前新建的數(shù)據(jù)回填,如果是{}的形式 需要一一對(duì)應(yīng),如果是[]的形式 需要單獨(dú)的值意思是不接受數(shù)組對(duì)象也就是[{},{},{}]的形式解決方法:借用對(duì)象,用key去找value
// 進(jìn)入編輯頁(yè)面 多選框的回填(轉(zhuǎn)換為對(duì)象的形式,用key來(lái)找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中對(duì)自己的組件使用setFieldsValue
setFieldsValue的用法
setFieldsValue是antd form的一個(gè)api,其作用是對(duì)指定的已使用from包裹的表單進(jìn)行value設(shè)置。那么所以它的功能也很簡(jiǎn)單,那就是給指定的input設(shè)置value。如下所示:
import React from "react";
import { Form, Input } from 'antd';
class TestForm extends React.Component {
componentDidMount(){
const { setFieldsValue } = this.props.form;
// 這里就能實(shí)現(xiàn)指定表單設(shè)置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)問(wèn)題
那么假如把
{getFieldDecorator('username', {})(<Input />)}換成
{getFieldDecorator('username', {})(<TestInput />)}setFieldsValue 設(shè)置的value去哪了?相信聰明的你一眼就看透了,自然是在TestInput上面。假如TestInput是我們自定義的組件,那么我們則可以在props中找value這個(gè)屬性,那么假如我們的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設(shè)置自定義的組件了。
到此這篇關(guān)于react中form.setFieldvalue數(shù)據(jù)回填時(shí) value和text不對(duì)應(yīng)的問(wèn)題的文章就介紹到這了,更多相關(guān)react中form.setFieldvalue數(shù)據(jù)回填內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React使用useLayoutEffect解決操作DOM頁(yè)面閃爍問(wèn)題的方法
本文介紹了useLayoutEffect解決操作DOM頁(yè)面閃爍問(wèn)題,useLayoutEffect是React中用于處理副作用的Hook之一,它與 useEffect功能相似,但執(zhí)行時(shí)機(jī)有著顯著差異,useLayoutEffect會(huì)在所有的DOM變更之后同步執(zhí)行,這一特性使其特別適合用于需要基于最新DOM結(jié)構(gòu)進(jìn)行操作的場(chǎng)景2025-12-12
react-native 完整實(shí)現(xiàn)登錄功能的示例代碼
本篇文章主要介紹了react-native 完整實(shí)現(xiàn)登錄功能的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
React中Provider組件詳解(使用場(chǎng)景)
這篇文章主要介紹了React中Provider組件使用場(chǎng)景,使用Provider可以解決數(shù)據(jù)層層傳遞和每個(gè)組件都要傳props的問(wèn)題,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-02-02
React Native 使用Fetch發(fā)送網(wǎng)絡(luò)請(qǐng)求的示例代碼
本篇文章主要介紹了React Native 使用Fetch發(fā)送網(wǎng)絡(luò)請(qǐng)求的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
React的createElement和render手寫實(shí)現(xiàn)示例
這篇文章主要為大家介紹了React的createElement和render手寫實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
React中的useState和setState的執(zhí)行機(jī)制詳解
這篇文章主要介紹了React中的useState和setState的執(zhí)行機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03

