我试图将redux与typescript一起使用,并将状态保存到本地存储中,但在保存状态时遇到了一些困难——这是我当前的代码。我是打字的新手,有人对有什么建议吗
减速器
import { combineReducers } from "redux";
import user from "./user";
import account from "./account";
const allReducers = combineReducers({
user:user
account:account
});
export type RootState = ReturnType<typeof allReducers>
store.js
import { createStore } from "redux";
import {RootState} from '../reducers/index'
function saveToLocalStorage(state) {
try {
const serializedState = JSON.stringify(state);
localStorage.setItem("state", serializedState);
} catch (e) {
console.log(e);
}
}
function loadFromLocalStorage() {
try {
const serializedState = localStorage.getItem("state");
if (serializedState == null) {
return undefined;
}
return JSON.parse(serializedState);
} catch (e) {
console.log(e);
return undefined;
}
}
const savedState = loadFromLocalStorage();
const store = createStore(
RootState,
savedState,
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
store.subscribe(() => saveToLocalStorage(store.getState()));
export default store;
当我试图编译代码时,我不断地收到这个错误。
Attempted import error: 'RootState' is not exported from '../reducers/index'.
我对redux没有太多经验,但通过阅读createStore
的文档,我发现:
createStore
Redux的createStore。您不应该直接使用它。
当查看createStore
的参数时,此文档指出第一个参数应该是reducting函数,而这里传递的是导出的typescript类型,而不是实际可调用的函数。这让我相信你错误地使用了createStore
,这可以解释你的错误:Attempted import error: 'RootState' is not exported from '../reducers/index'.
我会从Typescript快速入门开始,按照他们的建议使用configureStore
来设置RootState
。
另请参阅:
- 定义根状态和调度类型
- ConfigureStore
React&TypeScript中的Redux-完整指南:商店配置,但我仍然会从基本教程开始,并从那里开始工作。