【发布时间】:2019-08-06 14:40:03
【问题描述】:
我正在构建一个函数 React 组件,它使用各种 useState() 钩子。它们中的每一个都提供了一个状态和一个可以调用来更新它的函数。这从内部反应本身就可以很好地工作。但在我的场景中,我还必须处理其他(DOM/Google Maps)环境。
作为来自 Google 地图上的 DOM 元素的回调,我想调用 setState(!state) 来翻转布尔值。但是,这只适用于一次。
我认为问题在于 setState 钩子无法获取最新状态,而是使用初始状态。翻转 bool 1 将反转它,但再次翻转它而不考虑前一个更改不会更新任何内容。
我已经设法通过实现一个状态来解决这个问题,该状态在 DOM 中的数据属性上设置布尔值(然后翻转该布尔值),但我认为这是一个相当丑陋的解决方案。
我应该如何从非 React 提供的回调函数中更新功能性 React 组件中的状态?
【问题讨论】:
标签: javascript reactjs react-hooks