我的根布局中有这样的结构
export default function RootLayout({ children }) {
const dispatch = useDispatch();
useEffect(() => {
dispatch(fetchProducts());
}, [dispatch])
return (
<Provider store={store}>
<html lang="en">
<body>
<header>
<SearchBar />
<Logo />
<Menu />
</header>
<main>
{children}
</main>
<footer>
<Bottom />
</footer>
</body>
</html>
</Provider>
)
}
字符串
问题是,我只想在和组件中使用Redux,所以这些是我需要的唯一客户端组件。但它们不是彼此的子/父。在这种情况下我应该怎么做?
我可以为每个组件创建两个不同的提供程序吗?我认为如果我在应用程序中只使用客户端组件,这是没有意义的。
1条答案
按热度按时间brjng4g31#
RootLayout是一个服务器组件,这意味着你不能在其中使用钩子。
你现在有几个选择。
1.使用SSR获取产品并将数据传递给需要它的组件。理想情况下,您希望在需要数据的组件附近执行此操作。如果您有产品页面,则可以在此处执行此操作。
1.按原样获取产品,但在需要数据的组件中进行,并使用
use client
将该组件设置为客户端组件例如1,它可能看起来像这样。
字符串
对于选项2,您只需要将此钩子移动到客户端组件中
型