如果我将useState与部分更新回调一起使用,是否有充分的理由选择useReducer而不是useState?

时间:2019-11-25 11:44:02

标签: reactjs react-hooks

我正在尝试使用钩子(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
}))

1 个答案:

答案 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));