反应上下文挂钩更新后如何触发功能

Posted

技术标签:

【中文标题】反应上下文挂钩更新后如何触发功能【英文标题】:How trigger function after react context hook updated 【发布时间】:2021-10-17 00:20:15 【问题描述】:

我正在尝试在 react 的“上下文挂钩”更新后调用一个函数。试了下面的代码:

const MyComponent = () => 
  [context] = useContext(MyContext);
  
  function updateContext():void 
    context = "someNewContext";
  
  
  function anotherFunction():void 
    console.log("success!");
  
  
  useEffect(() => 
    anotherFunction();
  , [context]);
  
  return (
    <button onClick=updateContext>update</button>
  );


export default MyComponent;

【问题讨论】:

反应更新中的上下文挂钩是什么意思? . react 中的上下文值是一个对象。而且您也不会像在 updateContext 方法中那样直接改变上下文值。我们想在这里实现什么目标? 【参考方案1】:

现在我知道出了什么问题...首先我需要一个带有 useState 的包装器,如下所示:

const App = () => 
  const [context, setContext] = useState("initial value");
  const value =  context, setContext ;

  return (
    <MyContext.Provider value=value>
      <MyComponent />
    </MyContext.Provider>
  );
;

然后在组件上:

const MyComponent = () => 
  context, setContext = useContext(MyContext);

  function updateContext():void 
    setContext("Some new context");
  

  function anotherFunction():void 
    console.log("success!");
  

  useEffect(() => 
    anotherFunction();
  , [context]);

  return (
    <button onClick=() => updateContext()>update</button>
  );


export default MyComponent;

【讨论】:

以上是关于反应上下文挂钩更新后如何触发功能的主要内容,如果未能解决你的问题,请参考以下文章

如何将默认反应上下文值设置为来自 Firestore 的数据?

使用反应上下文 api 从帮助函数显示加载器

React Context 组件在状态更改时不会更新

Drupal:如何使用上下文来触发由视图引起的分类术语条件的反应?

无法读取上下文提供程序中的 useReducer 挂钩更新的状态

尽管状态发生了变化,但自定义钩子不会触发组件重新渲染