我正在尝试使用钩子(useState,useReducer,useEffect等)重写我的应用程序。实际上我经常使用useReducer,但仍然想了解无法使用useState的地方,但是可以使用useReducer,例如在这个简单的虚拟代码段中:
// Setting initial state
const [state, useState] = React.useState({a: 1, b: 2})
// Update only a piece of state (the same as old this.setState({c: 3}))
setState((prevState) => ({
...prevState,
c: 3
}))
setState((prevState) => ({
...prevState,
d: 4
}))
setState((prevState) => ({
...prevState,
a: 100
}))
答案 0 :(得分:0)
总是可以使用useState()
,但是当您使用useReducer()
时,可以将状态更新逻辑提取到动作/缩减器中以简化组件:
const Component = () => {
// Setting initial state
const [state, dispatch] = React.useReducer(reducer, {a: 1, b: 2})
// Update only a piece of state (the same as old this.setState({c: 3}))
dispatch(setC(3));
dispatch(setD(4));
dispatch(setA(100));