所以用react 16 setState(null)不会触发更新

docs


  用null调用setState不再触发更新。这允许
  您决定是否要重新渲染。


但是,我需要设置状态null并更新组件。我怎样才能做到这一点?
我尝试了以下方法-它们都不起作用。

const [state, setState] = useState(null);
....
....
// neither of the following statements update the component
setState(null)
setState(() => {return null});

最佳答案

使用挂钩时,可以使用一些虚拟状态来强制更新。请考虑在可能的情况下解决必须强制执行状态更新的问题。

function useForceUpdate() {
  const [i, setI] = React.useState(0)
  return React.useCallback(() => setI(i => i + 1), [])
}

function F() {
  const forceUpdate = useForceUpdate()
  ....
  forceUpdate()
}

关于javascript - react setState(null)并强制更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58676257/

10-11 03:05
查看更多