我有三个组件,它们全部都连接到redux存储并显示相同的状态,我们称之为x
三个连接的组件具有父子关系,例如:
- connect()(ComponentA)
- connect()(ComponentB)
- connect()(ComponentC)
ComponentB和ComponentC都是ComponentA的子代
当我在连接的ComponentC中更改x
的值时,x
的显示在ComponentA和ComponentB中也发生了变化,但是在ComponentB中调用了render方法多少次?
理论上,它应该调用两次(一次由上级组件A调用,一次由其自身调用),实际上仅调用一次。为什么?
Redux代码:
function counter(initalState = { count: 0 }, action) {
switch (action.type) {
case "add":
return Object.assign({}, { count: initalState.count + 1 });
default:
return initalState;
}
}
const store = createStore(
combineReducers({
counter
})
);
function mapStateToProps(state) {
return {
count: state.counter.count
};
}
function mapDispatchToProps(dispatch) {
return {
add: function() {
dispatch({
type: "add"
});
}
};
}