useContext 在我的反应代码中不起作用

useContext is not working in my react code

应用程序组件:

    import React,{createContext} from "react";
    import "./style.css";
    import A from "./A";
    
    export const userContext =createContext();
    
    function App() {
      return (
        <userContext.Provider name={"samuel"}>
          <div>
            <A />
          </div>
        </userContext.Provider>
      );
    }
    export default App;

组件 A

    import React from 'react';
    import B from './B';
    function A(){
      return (<div>
      <h3>Component A </h3>
      <B />
      </div>)
    }
    
    export default A;

组件 B:

        import React, { useContext } from "react";
        import {userContext} from "./App";
    
    function B() {
      const name = useContext(userContext);
      return (
        <div>
          <h3>Component B{name} </h3>
        </div>
      );
    }
    
    export default B;

我在 App 组件中传递的上下文值未在组件 B 中使用。

上下文用于将数据直接传递给组件,而不是传递给目标组件路径中的每个组件。 这样不需要数据的组件就无法访问它。 我在接收器组件上使用 useContext 钩子而不是 Context.consumer api。

你必须将 value 传递给 Provider 在这种情况下你想传递一个字符串,而你之前传递的对象使用了错误的关键字 name

我发现的另一个问题是您使用 B 从上下文中提取 value 但您没有将其置于组件可以访问上下文的范围内:

function App() {
  return (
    <userContext.Provider value="samuel">
      <div>
        <A />
        <B />
      </div>
    </userContext.Provider>
  );
}
export default App;

现在可以使用了,您可以查看 codesandbox