Помилка non-serializable value і її виправлення
Під час роботи з persistor може зʼявитися помилка про значення, яке не серіалізується. Приблизно така:
A non-serializable value was detected in an action, in the path: `register`. Value: ƒ register(key) {
_pStore.dispatch({
type: _constants__WEBPACK_IMPORTED_MODULE_0__.REGISTER,
key: key
});
}

Це виникає тому, що actions мають бути серіалізованими до моменту, коли вони фактично досягнуть сховища та передадуться редʼюсеру. І тип actions має бути рядком.
Щоб не бачити цю помилку потрібно дозволити додатку ігнорувати деякі типи actions. Для цього потрібно використати прошарок функціоналу middleware і прописати ігнорування помилок перш ніж оновлювати стейт.
Імпортуємо ті компоненти, тип яких будемо ігнорувати
import {
persistStore,
persistReducer,
FLUSH,
REHYDRATE,
PAUSE,
PERSIST,
PURGE,
REGISTER,
} from 'redux-persist'
У store після редʼюсерів прописуємо middleware за прикладом нижче
export const store = configureStore({
reducer: {
value: persistedValueReducer,
},
middleware: getDefaultMiddleware => [
...getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
}),
],
});
Після цього помилка в консолі зникне.
Посилання:
Last updated