Поддерживает ли параметры черного и белого списков динамический ключ?

#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 будут сохранены.