useContext返回_app.js(Next.js)中未定义的

useContext返回_app.js(Next.js)中未定义的,next.js,use-context,Next.js,Use Context,使用Next.js,我可以毫无问题地获取header.js文件中的上下文值,但它在app.js中返回undefined 这是我的密码 useLang.js 从'react'导入{createContext,useContext,useState} const LangContext=createContext() export const LangProvider=({children})=>{ const[lang,setLang]=useState('en') const switchLan

使用Next.js,我可以毫无问题地获取header.js文件中的上下文值,但它在app.js中返回
undefined

这是我的密码

useLang.js

从'react'导入{createContext,useContext,useState}
const LangContext=createContext()
export const LangProvider=({children})=>{
const[lang,setLang]=useState('en')
const switchLang=(选定)=>setLang(选定)
返回(
{儿童}
)
}
导出常量useLang=()=>useContext(LangContext)
_app.js

从“../hooks/useLang”导入{LangProvider,useLang}
导出默认函数MyApp(道具){
常量{Component,pageProps}=props
const contexts=useLang()
console.log(contexts)/->未定义。为什么???
返回(
)
}
header.js

从“../hooks/useLang”导入{useLang}
导出默认函数头(){
const{lang}=useLang()//-->在这里工作很好!
返回{lang}
}

我已经看过Next.js文档,但是它没有提到您不能在_app.js中使用状态或上下文。任何帮助都将不胜感激。

是的,您无法在_app.js上获得上下文的值,因为在顶部_app.js不能是LangProvider的孩子。您只能在LangProvider容器的子组件上使用上下文的值。

不知道为什么我没有想到这一点。非常感谢。