无法更改Redux切片中的initialState

juzqafwq  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(202)

我用initialState:{theme: "lightTheme"}这个硬编码主题创建了我的themeSlice,我很快意识到一个更好的方法是使用一个简单的布尔值initialState: { darkTheme: false }
在进行更改并再次运行程序后,我仍然在控制台中看到"theme": "lightTheme"
我在这个项目中使用了React-toolkit和RTK-Query,不确定我的设置是否是原因。
这是我的商店设定:

const rootReducer = combineReducers({
  test: testSlice,
  theme: darkThemeSlice,
  [apiSlice.reducerPath]: apiSlice.reducer,
});

const persistConfig = {
  key: "root",
  storage: AsyncStorage,
};

const persistedReducer = persistReducer(persistConfig, rootReducer);

const store = configureStore({
  reducer: persistedReducer,
  devTools: true,
  middleware: (getDefaultMiddleWare) =>
    getDefaultMiddleWare({ serializableCheck: false }).concat(
      apiSlice.middleware
    ),
});

export default store;

我清除缓存并重新运行应用程序,没有任何变化。
知道这里发生了什么吗?

i1icjdpr

i1icjdpr1#

您使用的是redux-persist。initialState是“如果没有状态,则为状态-但在您的情况下,总是存在您之前在该网站上的状态。
因此,initialState在您的情况下只会发生 * 当用户第一次访问网站,永远 *.
如果你还在开发阶段,你可以使用浏览器devtools重置本地存储,如果你的浏览器已经被部署了,你就不能访问所有用户的浏览器,所以你必须在redux-persist中创建一个迁移,将用户从你的第一个初始状态迁移到第二个初始状态(尤其是当你的状态改变结构时)。

djmepvbi

djmepvbi2#

要清除初始状态中的错误和硬设置值,您可以尝试

const persistConfig = {
  key: "root",
  storage: AsyncStorage,
  blacklist: ["theme"],
};

并且一旦清除,您就可以删除黑名单项目。

相关问题