我想从 迁移ReduxToolkit
到RematchJS
。
Store inReduxToolkit
配置如下:
import { combineReducers, configureStore } from '@reduxjs/toolkit';
import { TypedUseSelectorHook, useSelector } from 'react-redux';
import { authenticationReducer } from './system/auth';
import { themeUiReducer } from './ui/themeSlice';
export const rootReducer = combineReducers({
data: combineReducers({
}),
system: combineReducers({
auth : authenticationReducer
}),
ui: combineReducers({
theme: themeUiReducer
}),
});
export const store = configureStore({
reducer: rootReducer,
middleware: (getDefaultMiddleware) => [...getDefaultMiddleware()],
});
export type RootState = ReturnType<typeof store.getState>
export const useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;
我的 ThemeSlice 看起来像这样:
import { createEntityAdapter, createSlice, PayloadAction } from "@reduxjs/toolkit";
export interface IThemes {
darkMode: boolean | undefined,
}
const initialState: IThemes = {
darkMode: false,
}
const themeSlice = createSlice({
name: 'themeUI',
initialState: initialState,
reducers: {
setDarkMode: (state, action: PayloadAction<boolean | undefined>) => {
state.darkMode = action.payload;
},
},
extraReducers: {
}
})
export const { setDarkMode } = themeSlice.actions;
export const themeUiReducer = themeSlice.reducer;
我如何重写它RematchJS
:这是我到目前为止所拥有的:
import { combineReducers } from '@reduxjs/toolkit';
import { TypedUseSelectorHook, useSelector } from 'react-redux';
import { init } from "@rematch/core";
import thunk from "redux-thunk";
import { themeUiReducer } from './ui/themeSlice';
export const rootReducer = combineReducers({
ui: combineReducers({
theme: themeUiReducer
}),
});
export const store = init({
redux: {
reducers: {
rootReducer
},
middlewares: [thunk],
},
});
export type RootState = ReturnType<typeof store.getState>
export const useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;
我想重用combineReducers
但没有reduxToolkit
导入。所以我可以像这样访问状态:
const darkMode = useTypedSelector((state) => state.ui.theme.darkMode);
如果我如上所述使用我的商店,我总是会收到错误,即“从不”类型上不存在属性主题。
有人可以帮助我吗?