我已经开始使用React挂钩了。我正在研究useReducer
的各种示例。我看到为了访问您组件中的redux store
和dispatch
事件,我们使用[state, dispatch] = useReducer(initState)
。我想知道,React
的反应性方法如何实现,而我们过去常常用它来做mapStateToProps
,然后在状态的选择性属性上仅我们的组件用来反应。如果可以举一个例子,我将不胜感激。
根据我的理解,我们编写[state, dispatch] = useReducer(initState)
的所有组件,即使我们不想,也将重新渲染所有这些组件。
答案 0 :(得分:0)
首先,useReducer
与Redux无关。它只是an alternative到useState
,在您的状态具有复杂的转换流程的情况下会很有用。
React-Redux provides useSelector
,useStore
和useDispatch
。一旦使用useSelector
,它已经does optimization了:
但是,当将操作分派到Redux存储时,仅当选择器结果与上一个结果不同时,useSelector()才强制重新渲染。从v7.1.0-alpha.5开始,默认比较是严格的===参考比较。这与connect()不同,connect()对mapState调用的结果使用浅层相等性检查来确定是否需要重新渲染。这对应该如何使用useSelector()有一些影响。
这是为什么我们不惜一切代价避免使用useStore
的主要原因(任何调度都会触发重新渲染)。