#redux #redux-persist
Вопрос:
Из документа «Черный список и белый список» мы можем решить, какой ключ в хранилище redux будет сохранен в веб-хранилище. Но ключи статичны, а это значит, что вам нужно заранее определить ключи состояния.
const persistConfig = {
key: 'root',
storage: storage,
whitelist: ['navigation'] // only navigation will be persisted
};
Мой сценарий заключается в том, что некоторые ключи в состоянии redux являются динамическими. Например, структура данных состояния выглядит следующим образом:
state = {
api: {
products: [],
banners: []
},
// use redux-persist to store below state slice into web storage.
1_v7: { selectedPayment: 1 },
2_v6: { selectedPayment: 2 }
}
Ключ 1_v7
состоит из product_id
продукта и product_version
состоит из него. Пользователи могут получать доступ к разным версиям продукта на одном и том же устройстве, что означает, что разные value
версии хранятся в веб-хранилище.
Мне нужно динамически задать значение ключа в whitelist
опции. Как я могу это сделать?
Ожидайте whitelist
, что опция будет поддерживать шаблон или префикс, например:
state = {
api: {},
product_1_v7: {},
product_2_v6: {}
}
const persistConfig = {
key: 'root',
storage: storage,
whitelist: ['product_*']
};
Все фрагменты состояния с префиксом product
будут сохранены.