fil*_*der 6 reactjs react-hooks use-state
与 from 类不同state,您不限于单个对象。使用useState,您可以为每种情况创建单独的值,如下所示:
const [name, setName] = useState('John');
const [email, setEmail] = useState('john@example.com');
const [age, setAge] = useState(25);
Run Code Online (Sandbox Code Playgroud)
但是,我发现这非常肮脏,并且更喜欢只使用一个useState用对象初始化的:
const [user, setUser] = useState(
{ name: 'John', email: 'john@example.com', age: 25 }
);
Run Code Online (Sandbox Code Playgroud)
我知道没有严格的限制并且useState可以存储对象,但是在类组件中,当您使用更新状态时this.setState,它会与旧的合并。使用 时useState,更新函数会用新状态替换旧状态(没有合并)。
我经常像下面这样实现:
setUser(prevStat => ({
...prevState,
name: 'Daniel'
}));
Run Code Online (Sandbox Code Playgroud)
如果我是正确的,更新对象状态将重新渲染对象状态的所有字段,这对于应用程序来说可能会更昂贵?
你可以这样做,但这不是React 官方文档所做或推荐的。这仍然是一种可行且有效的方法。
\n如果您发现自己使用状态对象是因为有很多状态,或者管理交互变得复杂,那么现在可能是考虑使用带有useReducer. 您可以将样板文件和逻辑移出直接调用站点,并更好地保留对状态对象属性之间关系的概述。使用减速器,您\xe2\x80\x98d 只需编写dispatch({ type: "SET_NAME", name: "Daniel" }).
将修改状态的所有代码放在一处(reducer)可以让您更好地推理诸如重置状态之类的操作。
\n返回的调度函数useReducer也很稳定,非常适合传递给子组件,从而更容易将组件重构为更小的组件。
| 归档时间: |
|
| 查看次数: |
12532 次 |
| 最近记录: |