javascript - 单击处理程序中未定义 react 上下文值

标签 javascript reactjs react-context

我有一个功能组件,我试图在其中使用上下文,我在导入过程中获得了值,但是当我想在点击处理程序中使用它时,却说它未定义

component.js

// I get these values over here
const [contextState, setContextState] = useContext(MyContext);
const clickHandler = (e) => {
    debugger; // when I am trying to log any of these values I get error of not defined
}

return (<button onClick={clickHandler}>Click me!</button>);

此外,我已经包装了我的 app.js 组件,如下所示

import { MyContextProvider } from './MyContext';
return (
    <Router>
        <MyContextProvider>
            <div className='App'>
                <Component />
            </div>
        </AuthContextProvider>
    </Router>
);

现在是我的上下文文件,myContext.js

import React, { useState, createContext } from 'react';

const MyContext = createContext([{}, () => {}]);

const MyContextProvider = (props) => {
    const [contextState, setContextState] = useState({
        userIsLoggedin: false,
        fName: '',
        lName: '',
        userName: ''
    });
    return (
        <myContext.Provider value={[contextState, setContextState]}>
            {props.children}
        </myContext.Provider>
    );
};

export { myContext, MyContextProvider };

最佳答案

看起来您的上下文文件中有一些拼写错误。首先,使用 MyContext该文件中的任何地方(不是 myContext ),其次,请注意您在第一次调用时指定的变量名称 useState然后将相同的值传递给上下文( authStatecontextState ):

import React, { useState, createContext } from "react";

const MyContext = createContext([{}, () => {}]);

const MyContextProvider = props => {
  const [authState, setAuthState] = useState({
    userIsLoggedin: false,
    fName: "",
    lName: "",
    userName: ""
  });
  return (
    <MyContext.Provider value={[authState, setAuthState]}>
      {props.children}
    </MyContext.Provider>
  );
};

export { MyContext as default, MyContextProvider };

Here's a working codesandbox with your setup

关于javascript - 单击处理程序中未定义 react 上下文值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62640040/

相关文章:

javascript - 选择指定元素之后给定类型的下一个元素

svg - 将 SVG 标记添加到 React 组件

javascript - react useContext() 性能,自定义钩子(Hook)内的 useContext

javascript - 带有钩子(Hook)的 react 上下文防止重新渲染

javascript - 失败的 Prop 类型。我的 redux 存储中未定义所需的 prop 类型

javascript - 使用 JavaScript 更改选项的位置

javascript - 将 <Mutation> 改为 useMutation

css - 样式化组件/ react /语义/ Prop 和计算

javascript - 使用虚拟键盘时 useState 的初始值未更新

javascript - 页面加载后按钮跳动两次