【问题标题】:unable to get context api values无法获取上下文 api 值
【发布时间】:2019-12-20 18:24:54
【问题描述】:

我是反应 js 的新手。我从“https://medium.com/simply/state-management-with-react-hooks-and-context-api-at-10-lines-of-code-baf6be8302c”复制了代码。

当我尝试读取状态提供程序中的上下文 api 值时(状态更新后),这些是未定义的。我能够从 stateConsumer 函数中获得正确的值。 StateContext 在这里是全局对象。

export const StateContext = createContext();

export const StateProvider = ({ reducer, initialState, children }) => {
  console.log(useStateValue());
  return (
    <StateContext.Provider value={useReducer(reducer, initialState)}>
      {children}
    </StateContext.Provider>
  );
}

export const stateConsumer = () => {
  //console.log("SC",useContext(StateContext));
  return useContext(StateContext);
}

【问题讨论】:

    标签: reactjs


    【解决方案1】:

    使用this upmostly article 中的示例,我认为您需要稍微修改一下:

    export const StateContext = createContext([{}, () => {}]);
    
    export const StateProvider = ({ reducer, initialState, children }) => {
      const [state, setState] = useContext(StateContext);
    
      return (
        <StateContext.Provider=value={[value, setState]}>
          {children}
        </StateContext.Provider>
      );
    };
    

    它更详细地介绍了使用状态和上下文,您应该阅读更多内容以充实您的代码。公平地说,这是一本复杂的读物,但很有趣。

    【讨论】:

    • 它不起作用。每次在 StateProvider 函数中(也更新状态后),状态值为空。我的主要疑问是在更新状态后 StateProvider 将被调用,但在 StateProvider 函数中,我们使用的是已在模块加载时定义的 StateContext。但是每次更新 stateContext 都是空的。
    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 2021-12-25
    • 2022-01-10
    • 1970-01-01
    • 2020-09-04
    • 2014-09-06
    • 2016-08-19
    • 1970-01-01
    相关资源
    最近更新 更多