导入无法在redux中使用typescript reducer



我试图将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-完整指南:商店配置,但我仍然会从基本教程开始,并从那里开始工作。

最新更新