reactjs - 即使使用默认值,useContext 也会返回 undefined
问题描述
useContext
一直回来undefined
找我。
我很困惑为什么在这里,因为我有我的 Provider 并且我有我的 defaultValues。
我在哪里消费上下文:
import React from 'react';
import { useContext } from 'react';
import { UserContext } from '../context/UserContext.js';
const Login = () => {
console.log(UserContext);
console.log(useContext(UserContext));
const context = useContext(UserContext);
const authenticate = (e) => {
e.preventDefault();
// const token = login();
test();
};
return (
<div className="login-container">
<button onClick={authenticate}>Login</button>
</div>
);
}
export default Login;
我的 App.js:
import { UserProvider } from './context/UserContext.js';
import './App.css';
function App() {
return (
<UserProvider>
<Login />
</UserProvider>
);
}
export default App;
我的 UserContext.js:
import { createContext } from 'react';
import Web3 from 'web3';
import APIClient from '../client/dapp-api';
const defaultValues = {
user : null,
test: () => {},
};
export const UserContext = createContext(defaultValues);
export const UserProvider = ({ children }) => {
const test = () => {
console.log('this works');
};
return(
<UserContext.Provider values={{
...defaultValues,
test,
login,
}}>
{ children }
</UserContext.Provider>
);
}
解决方案
上下文提供者有一个名为“value”的道具,而不是“values”。在您的 UserProvider 组件中,将您的用法更改为:
<UserContext.Provider value={{ ...data here... }}>
推荐阅读
- asp.net-core - 如何解决 ERR_CONNECTION_REFUSED
- c++ - 如何使用包含和库创建 Makefile?
- python - 并发 TensorFlow 字符串拆分
- c# - 通过动态调用(获取)属性来初始化(实体)对象。实体框架,c#,ASP>NET
- model-driven-development - eclipse Sirius和epsilon之间的区别
- javascript - 带有 ES6 babel 编译模块的“SyntaxError: import not found”
- netlogo - 如何根据颜色和最小距离将海龟分组在一起
- python - picamera.exc.PiCameraMMALError 的 Raspberry Pi 错误:无法启用连接:资源不足
- c++ - MacOS 上的 Clang 包含问题
- python - Selenium IDE python代码导出,不起作用