在反应中更新 JS 状态对象的最佳路径

时间:2021-02-05 09:30:05

标签: javascript react-native

如何改进这段代码?

const [formData, setFormData] = useState({});
const setFormFieldValue = (name, value) => {
    let newValues = {};
    newValues[name] = value;
    setFormData({...formData, ...newValues})
}

1 个答案:

答案 0 :(得分:1)

有时这可能不合适,因为 formData 中的值可能不会更新,因为渲染周期仍然存在。

如果您应该使用最新状态并使用新状态更新状态,那么您必须访问之前的状态。

例如:

const [formData, setFormData] = useState({});
const setFormFieldValue = (name, value) => {
    let newValues = {};
    newValues[name] = value;
    setFormData(prevFormData => {...prevFormData, ...newValues})
}