0
我有這應該設置父狀態,因此引發的onUpdate到子組件的輔助功能:Object.create有什麼替代方法(將狀態設置爲React組件時)?
validateInput: function (inputValue, inputName, inputRules, setFormState, formFields) {
let hasError = false;
let errorText = false;
if (!inputValue && inputRules.required) {
hasError = true;
errorText = 'This field is required.';
}
else {
hasError = false;
errorText = false;
};
state = { fields: Object.create(formFields) };
state.fields[inputName].hasError = hasError;
state.fields[inputName].errorText = errorText;
return setFormState(state);
}
這給了我想要的效果,子組件的更新。但是如果我在父組件中記錄狀態,我會得到空對象。當我登錄時,這些值在proto下找到,我實際上並沒有完全理解JavaScript的整個對象原型。
如果我修改了代碼,這樣,該狀態變量以下
state = { fields: formFields };
的情況下轉身。我在父組件中得到正確的狀態,但是子組件更新沒有被觸發。
我有什麼替代方法使用Object.create()?這是爲什麼發生?
我還想補充一點,我知道這個問題的標題很傻,這真的讓我失去了知覺。
這解決了它。我確信我在使用對象引用到原始狀態時做錯了什麼,但仍然不知道setState()/ update子句行爲背後的確切推理。 –
Object.assign行爲仍然存在一些混淆。你可以看看這個:http://pastebin.com/ifcA7w4J?我將formFields對象發送給此函數,並根據我如何使用Object.assign來修改調用函數中的原始對象。 –
第一個在L4上創建'formFields'的淺拷貝,這意味着嵌套對象仍然是引用,並且你在L5-6上對它們進行變異。第二個用'field'對象替換'inputName'上的嵌套對象。 –