我有一组通过容器组件使用中央存储(即 redux 存储)的组件。这些组件往往是简单的并且驻留在 HOC 组件中。HOC 组件使用react-redux connect。
class HOComponent extends Component {
const { data1, data2 } = this.props;
render() {
<Component1 data={data1} />
<Component2 data={data2} />
}
}
const selector = (state) => ({
data1 = selectors.data1(state),
data2 = selectors.data2(state),
other = selectors.other(state)
});
上面分别是子组件Component1和 Component2的选择器。
下面是使用reselect的选择器的外观。
const alldata = (state) =>
state.alldata;
export other = (state) =>
state.other;
export data1 = createSelector(
[alldata],
(alldata) => {
//lets assume
return alldata.filter(d => d.criteria === data1.criteria);
})
export data2 = createSelector(
[alldata],
(alldata) => {
//lets assume
return alldata.filter(d => d.criteria === data2.criteria);
})
问题是重新选择的正确用法我注意到这是无效的,因为如果我的 HOC其他选择器触发了Component1 Component2无论如何也会被重新渲染。我应该检查shouldComponentUpdate方法中的每个数据流。我认为重新选择使用将首先解决这个问题。我误会了吗。它只是防止重新计算部分吗?
这是我之前的帖子的延续, 防止在 redux 中触发子组件的选择器