когда вы вызываете состояние типа state
вместо ...state
, вы не повторно инициируете состояние, а сохраняете предыдущее состояние внутри нового состояния, как показано в следующем примере:
state = {
eventsList: [...someEvents],
event: undefined,
isLastPage: false,
state: {
eventsList: [...someEvents],
event: undefined,
isLastPage: false,
state: {
eventsList: [...someEvents],
event: undefined,
isLastPage: false
}
}
};
Это не хороший шаблон / практика, только если это супер необходимо.
Так что правильно, оно сбрасывает предыдущее состояние с initialState, когда выбирает больше событий.
export const initialState = {
eventsList: [],
event: undefined,
isLastPage: false
};
const eventReducers: Reducer<EventState, any> = (
state = initialState,
action
) => {
switch (action.type) {
case LOAD_EVENTS:
return {
...state,
eventsList: action.eventsList
};
case FETCH_MORE_EVENTS:
return {
...initialState,
eventsList: state.eventsList.concat(action.eventsList),
isLastPage: action.eventsList.length === 0
};
default:
return state;
}
};
Но как выскажем, нужно только сбросить состояние eventsList
, но остальные должны оставаться прежними, вы можете оставить то же самое для этого редуктора:
case LOAD_EVENTS:
return {
...state,
eventsList: action.eventsList
};
Потому что, когда вы устанавливаете eventsList
, как в примере выше,Вы сбросили eventsList
и снова заполнили новые данные.Но не забывайте проблему с первым примером, который я говорю.