Привет, я использую Redux Persist для сохранения и регидратации моего приложения.Это мой productsReducer:
const initialState = {
products: [],
id: [],
qty: [],
numOfItems: 0,
totalPrice: 0,
status: '',
showPopup: false
};
const productsReducer = (state = initialState, action) => {
let updatedId = [...state.id];
let updatedQty = [...state.qty];
let index = updatedId.indexOf(action.id);
switch (action.type) {
case actionTypes.FETCH_PRODUCTS_REQUEST:
return {
...state,
status: action.status
}
case actionTypes.FETCH_PRODUCTS_SUCCESS:
return {
...state,
status: action.status,
products: action.products
}
case actionTypes.TOGGLE_POPUP:
return {
...state,
showPopup: !state.showPopup
}
};
.....
}
По неизвестным мне причинам мои действия persist / REHYDRATE показывают один ключ {showPopup: true} для productsReducer.
action
{type: "persist/REHYDRATE", payload: {…}, err: undefined, key: "root", asyncDispatch: ƒ}
asyncDispatch: ƒ asyncDispatch(asyncAction)
err: undefined
key: "root"
payload:
productsReducer: {showPopup: true}
userReducer: ...
_persist: {version: -1, rehydrated: true}
__proto__: Object
type: "persist/REHYDRATE"
После этого FETCH_PRODUCTS_REQUEST, showproductsReducer: {showPopup: true} тоже.Это показывает, что регидратация заменила продукты Редуцера вначале.
action FETCH_PRODUCTS_REQUEST
prev state
{productsReducer: {…}, userReducer: {…}, _persist: {…}}
productsReducer: {showPopup: true}
Когда выбранные продукты вызывают productsReducer, он пытался сделать let updatedId = [...state.id]
.Но это не сработало, так как productsReducer имеет только состояние showPopup.Вот тогда он выдал следующую ошибку ...
TypeError: Недопустимая попытка распространить не повторяемый экземпляр.
Я подозреваю, что ошибка заключается в постоянном / повторном вдыхании.Как я могу сбросить приложение или сбросить регидратацию?