例如在下面的代码中(注意:此代码中没有什么特别的,仅作为示例):
const INITIAL_STATE = {
hidden: true,
cartItems: []
};
const cartReducer = (state = INITIAL_STATE, action) => {
switch (action.type) {
case CartActionTypes.TOGGLE_CART_HIDDEN:
return {
...state,
hidden: !state.hidden
};
case CartActionTypes.ADD_ITEM:
return {
...state,
cartItems: addItemToCart(state.cartItems, action.payload)
};
case CartActionTypes.REMOVE_ITEM:
return {
...state,
cartItems: removeItemFromCart(state.cartItems, action.payload)
};
case CartActionTypes.CLEAR_ITEM_FROM_CART:
return {
...state,
cartItems: state.cartItems.filter(
cartItem => cartItem.id !== action.payload.id
)
};
default:
return state;
}
};
Q1:状态是否恢复为INITIAL_STATE,即
{
hidden: true,
cartItems: []
};
是否每次都将一个动作分派给该减速器?
Q2:那么Combinereducer中的状态也会重新初始化为初始状态,比如说reducer中返回了默认状态?或换种说法: Q3:组合减速器中与特定减速器相对应的状态不断重新初始化/设置为由最近分派的动作定义的状态,例如在上面的代码中,如果CartActionTypes.ADD_ITEM是最近分发给减速器的动作
case CartActionTypes.ADD_ITEM:
return {
...state,
cartItems: addItemToCart(state.cartItems, action.payload)
};
然后,combinantreducer中的状态将为(基于上述情况):
{
hidden: true,
cartItems: addItemToCart(state.cartItems, action.payload)
};
和隐藏会被重新初始化为true,而不考虑由于调度了较早的动作而导致其值处于什么状态?因此,基本上,最近调度的动作决定了将更改哪个当前状态值,而与先前调度的动作无关,并且最新调度未改变的状态值被重新初始化为初始状态?
问:如果我理解的正确,那么在响应中调用状态值的各个组件(例如使用mapStatetoProps)是否只能访问最新调度所定义的状态值?