我已经开始玩反应钩子了。我正在研究各种useReducer
的例子.我看到为了访问组件中的redux store
和dispatch
事件,我们使用[state, dispatch] = useReducer(initState)
.我想知道,如何实现React
的反应性方法,其中我们用来做mapStateToProps
然后只有我们的组件用来反应的状态的选择性属性。如果用一个例子来回答这个问题,我将不胜感激。 根据我的理解,我们编写的所有组件[state, dispatch] = useReducer(initState)
,所有这些组件都会重新渲染,即使我们不想。
首先,useReducer
与 Redux 无关。它只是useState
的替代方法,在您的州具有复杂转换流的情况下会有所帮助。
React-Redux 提供了useSelector
、useStore
和useDispatch
。一旦你使用useSelector
它已经在后台进行了优化:
但是,当将操作调度到 Redux 存储时,useSelector(( 仅在选择器结果看起来与上一个结果不同时才强制重新渲染。从 v7.1.0-alpha.5 开始,默认比较是严格的 === 引用比较。这与 connect(( 不同,connect(( 对 mapState 调用的结果使用浅相等性检查来确定是否需要重新渲染。这对你应该如何使用 useSelector(( 有几个含义。
这就是为什么我们应该不惜一切代价避免useStore
的主要原因(任何调度都会触发它的重新渲染(。