我正在使用 React Native 和 Redux 创建一个可以帮助用户找到附近快餐的应用程序。我有两个组件:地图和设置。
每个组件都(通过 react-redux)连接到其各自的状态。Map
还可以调度一个名为的动作创建者apiCall
:
地图组件
...
connect(
({ map }) => ({ map }),
{ apiCall }
)(Map)
设置组件
...
connect(
({ settings }) => ({ settings })
)(Settings)
我希望动作创建者从状态中apiCall
读取值: 。map
settings
this.props.apiCall(map, settings)
但是,我想避免将我的 Map 组件连接到,state.settings
因为它会在每次state.settings
更新时重新渲染。
我仍然很困惑,还没有找到解决这个问题的“正确方法”。这些是我尝试过的事情:
- 连接和使用
Map
以防止无用的重新渲染state.settings
shouldComponentUpdate()
- 使用
getState()
动作创建者读取state.settings
值 - 将所有内容封装在另一个更高的组件中,然后传递特定的道具
前两个有效,但似乎有点反模式,第三个仍在触发重新渲染。不太清楚为什么,即使它感觉是一个很好的解决方案。我还没有尝试过选择器,但它似乎是另一种选择。
总结一下,我的问题是:
如何调度需要从不同状态读取值的操作,同时避免不必要的重新渲染?