【发布时间】:2021-04-14 21:12:35
【问题描述】:
我正在使用 react context hooks API 并且在通过我的提供程序时遇到了这个函数的问题,但子组件似乎无法运行它。
以下是我的 app.js 文件
// import "./App.css";
import React, {useState} from "react";
import Test from "./Test"
import {ThemeContext,ThemeUpdateContext} from "./Contexts";
function App() {
const [logged, setLogged] = useState(false);
function connectRoom(){
console.log("hello");
setLogged(true);
}
return (
<ThemeContext.Provider value={logged}>
<ThemeUpdateContext.Provider value={connectRoom}>
<Test />
</ThemeUpdateContext.Provider>
</ThemeContext.Provider>
);
}
export default App;
以下是我创建上下文的 Contexts.js 文件。
import { createContext } from "react";
export const ThemeContext = createContext(null);
export const ThemeUpdateContext = createContext(null);
以下是我的 Test.js 文件,我在其中创建了一个简单的登录/注销页面,当单击按钮时会切换。
import React from 'react'
import {ThemeContext,ThemeUpdateContext} from './Contexts'
export default function Test() {
const {logged} = React.useContext(ThemeContext)
const {connectRoom} = React.useContext(ThemeUpdateContext)
return (
<div>
{!logged ? (
<h1> not logged</h1>
):(<h1>logged</h1>)}
<button onClick={connectRoom}> click me</button>
</div>
)
}
我需要帮助了解为什么当我单击按钮时页面没有切换到已登录,以及为什么当我单击它时它没有控制台记录任何内容。
【问题讨论】:
-
总是先检查文档:reactjs.org/docs/hooks-reference.html#usecontext 示例行是
const theme = useContext(ThemeContext);
标签: javascript reactjs react-hooks react-context