Например, в приведенном ниже коде (ПРИМЕЧАНИЕ: ничего особенного в этом коде, просто служит примером):
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: Значит, состояние в комбайне-редукторе также будет повторно инициализировано до исходного состояния, скажем, состояние по умолчанию возвращается в редуктор? или, говоря иначе: Q3: состояние в комбайн-редукторе, соответствующее конкретному редуктору, продолжает переинициализироваться / устанавливаться в состояние, определенное самым последним отправленным действием, например, в приведенном выше коде, если CartActionTypes.ADD_ITEM является последней отправленной действие для редуктора
case CartActionTypes.ADD_ITEM:
return {
...state,
cartItems: addItemToCart(state.cartItems, action.payload)
};
, тогда состояние в combreducer будет (на основе описанного выше случая):
{
hidden: true,
cartItems: addItemToCart(state.cartItems, action.payload)
};
и hidden будет повторно установлено в true независимо от значения, которое может были в состоянии из-за ранее отправленных действий? Таким образом, в основном последнее отправленное действие решает, какие текущие значения состояния будут изменены независимо от отправленных предыдущих действий, и значения состояния, не измененные последней диспетчеризацией, возвращаются в исходное состояние?
В: Если я прав в моем понимании тогда не будут ли различные компоненты в реакции, вызывающие значения состояния (например, с помощью mapStatetoProps), иметь доступ только к значениям состояния, определенным последней отправкой?