NextJS - 仅为几个特定页面添加提供程序

Posted

技术标签:

【中文标题】NextJS - 仅为几个特定页面添加提供程序【英文标题】:NextJS - Add provider for only a few specific pages 【发布时间】:2021-07-03 20:30:07 【问题描述】:

我是否可以只为特定路由添加提供程序,而不是在下一个 js 中转到我的整个应用程序?

my "pages" folder

我的上下文文件 [server.jsx]

import  createContext, useState  from 'react';

const ServerContext = createContext();

export const ServerProvider = ( children ) => 
    const [ data, setData] = useState(null);
    
    return (
        <ServerContext.Provider value= data, setData >
            children
        </ServerContext.Provider>
    );
;

export default ServerContext;

我不想将其传递给整个应用程序,而是将其传递给我的仪表板路由

[_app.jsx]

import  Provider  from 'next-auth/client';
import  ThemeProvider  from 'styled-components';

import GlobalStyles from '@/styles/global';
import theme from '@/styles/theme';

import  ServerProvider  from '@/contexts/server';

function MyApp( Component, pageProps ) 

    return (
        <ThemeProvider theme=theme>
            <Provider session=pageProps.session >
                <ServerProvider>
                    <Component ...pageProps />
                    <GlobalStyles />
                </ServerProvider>
            </Provider>
        </ThemeProvider>
    );


export default MyApp;

【问题讨论】:

您使用路由作为pages 文件夹中的文件,对吗?我认为在那里你可以为你的页面创建一个包装器并使用上下文。 @JorgeKunrath,这对我来说看起来不错,你能解释一下吗?打扰了 【参考方案1】:

您可以使用pages 文件夹中的文件来包装您的路线。

如果是静态文件,该文件类似于pages/server/index.js

例子:

import  ServerProvider  from "..."
import  ServerPageOrSomething  from "..."

export default function MyRoute( ...props ) 
  return (
    <ServerProvider>
      // my components, like:
      <ServerPageOrSomething ...props />
    </ServerProvider>
  )


//your Next stuff here
export async function getServerSideProps(props) 
// ...
  return 
    props: 
    //...
    ,
  ;

Next 的内容和...props 取决于您使用 Next 的目的。如果你不需要处理任何东西(获取数据等),你可以忽略它

【讨论】:

以上是关于NextJS - 仅为几个特定页面添加提供程序的主要内容,如果未能解决你的问题,请参考以下文章

使用证书签署 android 应用程序,有效期仅为几年

如何仅为列表中的项目子集提供披露按钮?

是否可以根据用户代理(设备类型)在 vercel 上使用 nextjs 提供不同版本的静态页面?

为 Nextjs 的图像提供源的最佳方式是啥?

无法在 NextJs + Storybook 中提供静态文件

使用 nextjs 渲染 html 页面的特定部分