javascript - 单击处理程序内部未定义 React Context 值
问题描述
我有一个功能组件,我试图在其中使用上下文,我在导入期间获得了值,但是当我想在点击处理程序中使用它时,说它没有定义
组件.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
在该文件中的任何地方使用(not myContext
),其次,注意您在第一次调用时指定的变量名称useState
,然后将相同的值传递给上下文(authState
vs contextState
):
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 };
推荐阅读
- java - 如何检查结果中的“评分”字段是否来自 Google Place Search?
- django - 在其他 django 模型中使用多个抽象/通用模型
- redis - 在 Redis 中实现具有唯一元素的队列
- python - Django:尝试在 URL 中使用 Slug 时出现 404 错误
- xamarin.forms - 在 xamarin.android 中没有在 Visual Studio 2017 中请求许可?
- xcode - Xcode 11.0 出现安装额外所需组件未知错误
- java - 如何使用 Selenium 和 Java 从多选列表中获取所选选项的文本
- html - 如何将我的图像浮动到许多段落的右侧?
- android - 防止在触摸外部时关闭加载有导航组件的对话框片段
- javascript - Angular:将对象转换为日期和时刻