【发布时间】:2023-02-02 15:04:44
【问题描述】:
我尝试将客户端 redux 持久存储放在一起,正如这里的文档所建议的那样:
https://github.com/kirill-konshin/next-redux-wrapper
// pages/_app.tsx
import React from 'react';
import App from 'next/app';
import {useStore} from 'react-redux';
import {wrapper} from './lib/redux';
import {PersistGate} from 'redux-persist/integration/react';
export default wrapper.withRedux(({Component, pageProps}) => {
const store = useStore();
return (
<PersistGate persistor={store.__persistor} loading={<div>Loading</div>}>
<Component {...pageProps} />
</PersistGate>
);
});
但是得到以下错误:
./pages/_app.tsx:40:39
Type error: Property '__persistor' does not exist on type 'Store<any, AnyAction>'.
38 | <meta name="robots" content="noindex" />
39 | </Head>
> 40 | <PersistGate persistor={store.__persistor} loading={<div>Loading</div>}>
| ^
41 | <Component {...pageProps} />
42 | </PersistGate>
43 | <CookieDialog />
怎么了?这是兼容性问题吗?有这些版本。
"redux": "^4.1.1",
"redux-persist": "^6.0.0",
"redux-saga": "^1.1.3",
我也不明白接下来的部分,为什么我需要 page 中的那些参数?这个connect 方法是什么?我真的需要吗?
// pages/index.js
import React from 'react';
import {connect} from 'react-redux';
export default connect(state => state, {setClientState})(({fromServer, fromClient, setClientState}) => (
<div>
__persistor就是这样在store.ts中赋值的。
const persistedReducer = persistReducer(persistConfig, combinedReducer);
const store: any = configureStore({
reducer: persistedReducer,
devTools: true,
});
store.__persistor = persistStore(store);
return store;
}
};
【问题讨论】:
-
你找到答案了吗?
-
在 app.tsx 中我忘记应用
wrapper.withRedux方法,所以需要:export default wrapper.withRedux(MyApp);