javascript - 反应上下文返回未定义
问题描述
不知道为什么会发生这种情况,我已经检查以确保状态值不是未定义的,它不是,我看不出我哪里出错了。
我的 authContext.js 文件
const initialState = {
isAuthorized: false,
}
export const authContext = React.createContext()
export default function AuthContextComp(props) {
const [state, dispatch] = useReducer(reducer,initialState)
return (
<authContext.Provider authState={state}>
{props.children}
</authContext.Provider>
)
}
function reducer(state, action){
switch (action.type) {
case 'signIn':
return true;
break;
default:
return state;
}
}
我的应用文件
function MyApp({ Component, pageProps, appProps }) {
return (
<GlobalContextWrapper pageData={pageProps}>
<AuthContextWrapper>
<div style={{textAlign:'center',paddingTop: 200}}>
<h2>Signed in</h2>
<button>Log in or log out</button>
<Component {...pageProps} />
<Test/>
</div>
</AuthContextWrapper>
</GlobalContextWrapper>
);
}
export default MyApp;
我试图使用上下文的组件
import React, {useContext} from 'react'
import {authContext} from '../global/authContext/AuthContext'
export default function Test() {
const t = useContext(authContext)
return (
<div>
This is the test component
</div>
)
}
你能看出这里有什么不对吗?我正在使用 next.js,但我不知道为什么不
解决方案
问题是当将状态传递给提供时,名称应该是值。不知道为什么会这样
<authContext.Provider value={state}>
{props.children}
</authContext.Provider>
推荐阅读
- quarkus - Quarkus 没有为基于 persistence.xml 的配置发现 @Entity 实体
- javascript - 为什么在onseeking事件中video.readyState总是1?
- integration - 如何在 Workato 中创建与 FOREACH 重复模式“项目批”兼容的批量/批处理操作
- flutter - 如何正确将String转换为Double?
- html - 弹性/网格布局。需要建议如何使用 Grid CSS 模型的 Flex 正确布局块
- python - 如何围绕 dict.update() 创建一个同样可以同时采用位置和关键字参数的函数?
- excel - Excel VBA通过用户窗体选择后保存文件夹位置
- aws-code-deploy - CloudDeploy Appspec.yml 问题
- postgresql - Postgres 在现有表上添加列需要很长时间
- python - Python bcubed clustering metric-TypeError:&:'dict'和'dict'不支持的操作数类型