javascript - react : Why isn't my context value updated?

标签 javascript reactjs jsx react-context

我正在玩 React Context API。我创建了一个简单的组件:

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

const MyContext = createContext(1);

const MyComponent = () => (
    <>
        <p>{useContext(MyContext)}</p>
        <MyContext.Provider value={2}>
            <p>{useContext(MyContext)}</p>
        </MyContext.Provider>
    </>
);

export default MyComponent;
我得到了两个 <p>1</p> .为什么第二个上下文没有更新为 2 ?我在使用 useContext()不正确?

最佳答案

您必须使用单独的组件才能使 Context 正常工作。
我已经提交了一个关于这个的错误;见 https://github.com/facebook/react/issues/18629
只需使用 Context 将代码拆分为不同的组件。

const Inner = () => (
    <p>{useContext(MyContext)}</p>
);

const MyComponent = () => (
    <>
        <p>{useContext(MyContext)}</p>
        <MyContext.Provider value={2}>
            <Inner />
        </MyContext.Provider>
    </>
);
那应该解决它。

关于javascript - react : Why isn't my context value updated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65496140/

相关文章:

已编译 GWT 代码的 JavaScript 异常

javascript - 从输入 onclick 获取上一个 td

javascript - javascript(ECMAScript) 赋值运算符如何工作

javascript - 如果 props 改变,React 会重新评估 useRef

javascript - 是否有将 React Elements javascript 代码转换为 JSX 的工具

javascript - 在 JSX sourcemap 中保留由 Webpack 设置的范围内的变量名称

javascript - 当我知道所有异步调用都已完成时,如何运行回调?

javascript - 如何使用 useEffect() 从 useReducer() 和 useContext() 状态管理设置中的 api 获取数据?

javascript - Font-Awesome 图标未显示在我的 ReactJS 网站中

javascript - 如何访问JS对象中嵌套项的索引?