【问题标题】:useContext returning undefined even with default values即使使用默认值,useContext 也会返回 undefined
【发布时间】:2021-11-06 22:34:50
【问题描述】:

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>
  );
}

【问题讨论】:

    标签: reactjs react-hooks react-context


    【解决方案1】:

    上下文提供者有一个名为“value”的道具,而不是“values”。在您的 UserProvider 组件中,将您的用法更改为:

    <UserContext.Provider value={{ ...data here... }}>
    

    【讨论】:

      猜你喜欢
      • 2018-08-04
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 2013-04-29
      • 2018-08-27
      相关资源
      最近更新 更多