React 功能组件访问整个状态
React functional component access entire state
在 classical 组件中,整个状态可作为单个对象使用 this.state = {}
,我想知道是否有类似的方法可以访问功能组件中的状态?您可以通过它们的变量名访问单个属性,但我想知道是否有一种方法可以一次访问所有这些属性,就好像它们存储在一个总体对象中一样,类似于 class 组件。
不,没有您可以访问的合并状态对象包含您通过 useState
设置的所有状态成员。
如果需要,您可以将所有组件状态存储在一个对象中(useState
docs 在谈到回调更新时甚至提到了这一点)。例如:
const [state, setState] = useState({
name: "",
profession: "",
age: null,
// ...
});
要更新任何单个状态成员,您必须自己处理创建整个新对象(来自 useState
的状态设置器不执行 Component.prototype.setState
执行的合并)。例如,设置 age
:
setState(state => ({
...state,
age: 42,
}));
使用回调形式很重要(根据现有状态设置状态时总是如此)。
但除非您这样做,否则您将无法访问任何一个对象。
在 classical 组件中,整个状态可作为单个对象使用 this.state = {}
,我想知道是否有类似的方法可以访问功能组件中的状态?您可以通过它们的变量名访问单个属性,但我想知道是否有一种方法可以一次访问所有这些属性,就好像它们存储在一个总体对象中一样,类似于 class 组件。
不,没有您可以访问的合并状态对象包含您通过 useState
设置的所有状态成员。
如果需要,您可以将所有组件状态存储在一个对象中(useState
docs 在谈到回调更新时甚至提到了这一点)。例如:
const [state, setState] = useState({
name: "",
profession: "",
age: null,
// ...
});
要更新任何单个状态成员,您必须自己处理创建整个新对象(来自 useState
的状态设置器不执行 Component.prototype.setState
执行的合并)。例如,设置 age
:
setState(state => ({
...state,
age: 42,
}));
使用回调形式很重要(根据现有状态设置状态时总是如此)。
但除非您这样做,否则您将无法访问任何一个对象。