【发布时间】:2019-08-20 12:10:21
【问题描述】:
我想在 React 中使用上下文将身份验证信息传递给子组件。我的上下文提供程序位于一个名为 AuthContext.js 的文件中:
import React, { Component, createContext } from 'react';
export const AuthContext = createContext();
class AuthContextProvider extends Component {
state = {
isAuthenticated: false
};
toggleAuth = () => {
this.setState({ isAuthenticated: !this.state.isAuthenticated });
};
render() {
return (
<AuthContext.Provider value={{...this.state, toggleAuth: this.toggleAuth}}>
{this.props.children}
</AuthContext.Provider>
);
}
}
export default AuthContextProvider;
但是当我从子组件访问上下文时,它返回undefined
import { AuthContext } from "../contexts/AuthContext";
export default function ButtonAppBar() {
return(
<AuthContext.Consumer>{(authContext) => {
console.log(authContext);
}}</AuthContext.Consumer>
);
}
在查看了 React Developer Tools 之后,我发现 ButtonAppBar 不在 AuthContextProvider 中。导入是正确的。除了导入错误之外还有什么原因吗?
React 版本: 16.9.0
【问题讨论】:
-
您如何使用 AuthContextProvider?你用的是什么版本的反应?
-
@Federkun 我正在使用 React 16.9.0。我正在使用上下文消费者来访问上下文……如果这就是你要问的?
-
我在问你是否可以确认AuthContextProvider被用作
ButtonAppBar的父组件,也许可以提供一个例子
标签: javascript reactjs react-context