【发布时间】:2023-02-24 06:09:24
【问题描述】:
我正在获取应用程序呈现之前从服务器获取数据,通过将 data 存储到 redux 存储中。
并面临这个错误:
错误:找不到 react-redux 上下文值;请确保组件包裹在
在
_app.tsx:function MyApp({ Component, pageProps, data }: AppProps & { data: any }) { console.log(data); // data is here const dispatch = useDispatch(); useEffect(() => { // Dispatch an action to store the fetched data in Redux store dispatch(saveData(data)); }, [dispatch]); return ( <Provider store={store}> <Component {...pageProps} /> </Provider> ); } MyApp.getInitialProps = async ({ Component, ctx }) => { const data = await fetch(`http://base-url/my-route`).then((res) => res.json()); let pageProps = {}; if (Component.getInitialProps) { pageProps = await Component.getInitialProps(ctx); } return { pageProps, data }; }; export default MyApp;store 是从 store.ts 导出的,我可以在应用程序的其他部分很好地使用这些 useDispatch 和 useSelector。
【问题讨论】:
-
我认为在
_app.tsx中使用useDispatch和dispatch是行不通的,因为_app.tsx是store中的providing并且无权访问商店。 Meaninig,只有<Provider />内部的组件可以访问存储并可以调度操作。_app.tsx不是这种情况。所以,我认为这就是问题所在。
标签: javascript reactjs redux