在 React 中更新对象状态的特定字段
Updating a specific field of object state in React
我正在使用 React 功能组件,我只想更新状态的特定字段并像以前一样保留其他值。这是状态初始化 -
const[value, setValue] = React.useState({
a: "5",
b: "6"
});
我希望只将 'a' 的值更新为其他值,假设为 7(同时为 'b' 保留相同的值)。目前我正在这样做 -
setValue(currValue => ({
...currValue,
a: "7"
}))
这是错误的吗?如果是,正确的做法是什么?
你的做法是正确的。
这是根据状态的当前值更新状态的正确方法。它被称为 setState
调用的函数形式。
setState((prevState) => {
// Do something with prevState
return newState; // Be aware to not mutate the prevState directly
});
示例:
// Array
setState((prevState) => {
const newState = Array.from(prevState);
newState.push('foo');
return newState;
});
// Object
setState((prevState) => {
return({
...prevState,
foo: 'bar'
});
});
主要是object/array引用要改!
我正在使用 React 功能组件,我只想更新状态的特定字段并像以前一样保留其他值。这是状态初始化 -
const[value, setValue] = React.useState({
a: "5",
b: "6"
});
我希望只将 'a' 的值更新为其他值,假设为 7(同时为 'b' 保留相同的值)。目前我正在这样做 -
setValue(currValue => ({
...currValue,
a: "7"
}))
这是错误的吗?如果是,正确的做法是什么?
你的做法是正确的。
这是根据状态的当前值更新状态的正确方法。它被称为 setState
调用的函数形式。
setState((prevState) => {
// Do something with prevState
return newState; // Be aware to not mutate the prevState directly
});
示例:
// Array
setState((prevState) => {
const newState = Array.from(prevState);
newState.push('foo');
return newState;
});
// Object
setState((prevState) => {
return({
...prevState,
foo: 'bar'
});
});
主要是object/array引用要改!