在React中,你有这样的东西:
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import App from "./App";
const rootElement = document.getElementById("root");
const root = createRoot(rootElement);
root.render(
<StrictMode>
<BrowserRouter>
<App />
</BrowserRouter>
</StrictMode>
);
字符串
你可以将Providers包裹在<App />
周围,但是在NextJS v13.4+ app router
中,这个并不存在。 另外,当导入第三方库在
context中使用时,我假设像useEffect/useState这样的东西会产生问题。在创建
context provider`时有没有办法处理这个问题?
1条答案
按热度按时间5n0oy7gb1#
问得好,很高兴你问了。
下面是我是如何做到的。让我们从“结束”开始,逐步向上,然后向下钻取。(然后我们将看看如何使用它们,即如何获取/设置
Pages
中的变量。)因此,在根元素render处不使用
<App />
,而是使用RootLayout。这确实是由NextJS创建的,并存在于此:/App/layout.js
字符串
好了,这就是你的
<Providers>
Package 器,你可以在这里导入你自己的提供者或第三方提供者。让我们来看看如何定义
<Providers />
。注意'use client'
表示法,以防止在服务器组件上使用“客户端”第三方库的问题。注意多个Providers应该如何依次 Package 彼此。我在这里写了:/app/ContextProviders
。型
最后,让我们看看如何创建一个Provider。
型
如果你对value为什么有双花括号感到困惑,它只是通过键值对(即对象字面量)赋值在代码中创建对象的简写。换句话说,语法糖较少,它是这样的:
型
或者更明确地说,这:
型
那么,我们如何在页面中使用它呢?
型
如果您想了解更多关于Vercel团队的信息,请查看here。