鍍金池/ 問答/HTML/ react antd props中的值設定到Field的問題

react antd props中的值設定到Field的問題

做新增功能的時候,發(fā)現(xiàn)會讀取到上一次保存的數(shù)據(jù),找了一下感覺是新增的時候將狀態(tài)改為create,然后props.modifiedFields有值就會自動讀取到,但是這邊不需要讀取到這個值,只需要讀取到props.item的值就可以了

//將props中的值設定到Field中
function mapPropsToFields(props) {

    if (props.modalType === "create")
        return props.modifiedFields || {};

    return { fields: props.item };
}

//每次值變動的時候,把最新的放到props.modifiedFields中
function onFieldsChange(props, fields) {
    Object.assign(props.modifiedFields, fields);
}

export default Form.create({ onFieldsChange, mapPropsToFields })(TableNursingRecordNew);

然后就屁顛屁顛的將mapPropsToFields改為

function mapPropsToFields(props) {
    return {fields: props.item};
}

本地沒有這個問題了,然后代碼也推到了服務器上,但是服務器上有這個問題,腦袋框框撞大墻....本地連服務器的環(huán)境也沒有這個問題,不知道為什么

回答
編輯回答
玩控

一般情況下,都用說:清緩存呀~~~

好吧,其他也沒什么用。

關鍵是上一次操作完后props.modifiedFields中是有值的,你并沒有清除。

想當然的面向對象的思路害死人了。

你應該將createedit的數(shù)據(jù)都認為是一個對象 obj。
obj中有id則,edit;否則create.

每次save后都將這個obj設置為null
create的時候,將obj賦值為{}
edit的時候,將obj賦值為entry。

2018年7月22日 04:44
編輯回答
大濕胸

發(fā)現(xiàn)問題定位錯了,以為還是mapPropsToFields的原因,其實不是,是表單數(shù)據(jù)選擇之后,改變了,有了value值,mapPropsToFields是成功了,但是mapPropsToFields好像只能給數(shù)據(jù)一個initialValue值,但是數(shù)據(jù)選擇之后有了value值。再怎么重新賦予initialValue值都是無用功,可以用

form.resetFields();

在關閉或者保存的時候將控件的值重置為initialValue值;但是這個不能滿足我的情況,我需要打開輸入框的時候每次去重新渲染這個組件

const Gen = () => <Modal {...ModalProps}/>;
return (
<Gen />
)

這樣好像就解決了我的問題

2018年3月4日 10:24