Reactjs forceUpdate与React挂钩

Reactjs forceUpdate与React挂钩,reactjs,react-hooks,Reactjs,React Hooks,是否有可以与React挂钩一起使用的forceUpdate的替代品 我的用例是组件实例之间的共享状态。本质上,每个实例只是单个全局状态的一个视图。使用ES6类,代码使用componentDidMount中的状态注册/注销组件,状态在其更改时调用forceUpdate,然后render方法直接查询全局状态 我想把它换成钩子。最初,useEffect似乎与这个问题完美匹配。但后来我意识到我没有访问forceUpdate的权限 我考虑了一种称为useState钩子的解决方法来添加一个虚拟计数器,然后从

是否有可以与React挂钩一起使用的forceUpdate的替代品

我的用例是组件实例之间的共享状态。本质上,每个实例只是单个全局状态的一个视图。使用ES6类,代码使用componentDidMount中的状态注册/注销组件,状态在其更改时调用forceUpdate,然后render方法直接查询全局状态

我想把它换成钩子。最初,useEffect似乎与这个问题完美匹配。但后来我意识到我没有访问forceUpdate的权限

我考虑了一种称为useState钩子的解决方法来添加一个虚拟计数器,然后从effect钩子更新计数器,但它感觉像是一个黑客。我还可以将所有相关的共享状态参数复制到effect挂钩中的组件状态中,然后引用状态中的参数。但它本质上复制了状态,这并没有用复制状态的行填充代码,而当前我只能在render方法中直接使用这些行


更新:这里是与共享状态示例的链接,该示例使用我希望转换为钩子的类组件,而无需复制状态或使用虚假状态更新。

还有一种方法可用于执行forceUpdate。这是:

从react文档:

如果下一个值与上一个值相同,useState和useReducer钩子都会退出更新。原地改变状态并调用setState不会导致重新渲染。 通常,您不应该在React中改变局部状态。但是,作为转义图案填充,即使状态没有更改,也可以使用递增计数器强制重新渲染


如果在状态或道具更新时在组件重新加载程序中重现问题,这将非常有用。。。您是否尝试过通过“数据”道具“强制”重新渲染器(类似于react virtualize的工作方式)?渲染函数中使用的值是组件的内部值。将它们作为属性传递意味着父级需要了解此实现的详细信息,并在使实现复杂化的所有实例中复制单个外部状态,但没有任何好处。谢谢,我错过了这一点。因此,添加任意突变计数器是React建议的解决方案。我想我会留在类中。代码长度方面我更喜欢钩子。它很容易实现。