Object有哪些替代方案.create(当将state设置为React组件时)

What alternatives there are for Object.create (when setting state to React component)?

本文关键字:设置 state React 组件 当将 create 方案 Object      更新时间:2023-09-26

我有一个辅助函数,它应该设置父组件的状态,因此触发onUpdate到子组件:

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()有什么替代方法?为什么会发生这种情况?

我还想补充一点,我知道这个问题的标题很傻,这真的让我迷路了。

不确定setFormStateformFields是什么样子,但您几乎可以肯定避免在这里使用原型。

例如,您可以合并Object.assign的所有属性:

let form = { hasError, errorText };
let fields = Object.assign({}, formFields, form);
let state = { fields };
return setFormState(state);

这将创建一个新的fields对象,具有formFieldsform的所有属性。