P粉5150665182023-08-17 11:47:45
這是經過測試的方法;
在你的應用程式資料夾下新增一個名為redux-provider.js的新檔案
"use client"; import { PropsWithChildren } from "react"; import { Provider } from "react-redux"; import { store } from "../store/store"; // 请调整路径 export default function ReduxProvider({ children }: PropsWithChildren<any>) { return ( <Provider store={store}> {children} </Provider> ); }
在你的應用程式資料夾下新增另一個名為provider.tsx的文件,並實作ReduxProvider
"use client"; import { PropsWithChildren } from "react"; import ReduxProvider from "./redux-provider"; export default function Providers({ children }: PropsWithChildren<any>) { return ( <ReduxProvider> {children} </ReduxProvider> ); }
在你的layout.tsx檔案(應用資料夾的直接子元件)中實作Providers
import React from "react"; import Providers from './provider'; export default function RootLayout({ children, }: { children: React.ReactNode; }) { return ( <html lang="en"> <body> <Providers> {children} </Providers> </body> </html> ); }
現在我們可以從其他頁面造訪store。
更新
是的。但是!將根元件包裝在ReduxProvider中並不意味著所有其他元件都是客戶端元件。你仍然可以有伺服器元件。如何做到?
在你的應用程式資料夾下方新增一個名為experimental的新資料夾,然後在experimental資料夾下新增一個名為page.tsx的新檔案。你可以從另一個檔案匯入page.tsx檔案的內容。
/experimental/page.tsx
####import HomePage from "../index"; // 这是一个在其中使用redux的客户端组件 export default async function Page() { // 这是一个服务器组件 return <HomePage />; }