使用useReducer挂钩时的被动方法

时间:2019-12-30 12:31:10

标签: reactjs react-hooks

我已经开始使用React挂钩了。我正在研究useReducer的各种示例。我看到为了访问您组件中的redux storedispatch事件,我们使用[state, dispatch] = useReducer(initState)。我想知道,React的反应性方法如何实现,而我们过去常常用它来做mapStateToProps,然后在状态的选择性属性上仅我们的组件用来反应。如果可以举一个例子,我将不胜感激。 根据我的理解,我们编写[state, dispatch] = useReducer(initState)的所有组件,即使我们不想,也将重新渲染所有这些组件。

1 个答案:

答案 0 :(得分:0)

首先,useReducer与Redux无关。它只是an alternativeuseState,在您的状态具有复杂的转换流程的情况下会很有用。

React-Redux provides useSelectoruseStoreuseDispatch。一旦使用useSelector,它已经does optimization了:

  

但是,当将操作分派到Redux存储时,仅当选择器结果与上一个结果不同时,useSelector()才强制重新渲染。从v7.1.0-alpha.5开始,默认比较是严格的===参考比较。这与connect()不同,connect()对mapState调用的结果使用浅层相等性检查来确定是否需要重新渲染。这对应该如何使用useSelector()有一些影响。

这是为什么我们不惜一切代价避免使用useStore的主要原因(任何调度都会触发重新渲染)。