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,
}));

使用回调形式很重要(根据现有状态设置状态时总是如此)。

但除非您这样做,否则您将无法访问任何一个对象。