如何根据反应功能组件中的先前状态有条件地更新状态?

所以,我想做以下事情,

const [value, setValue] = useState({})
const updateName = (name)
setValue(previousState => {
  if (/*check some conditions*/) {
    // dont update the state
  } else {
    return { /* some new state */ }
  }
});

无论如何我怎样才能实现它?

stack overflow How to conditionally update state based on previous state in react functional component?
原文答案
author avatar

接受的答案

你快到了。

const [value, setValue] = useState({})

setValue((prevState) => {
  if (condition to not update) {
    return prevState;
  } else {
    return newState;
  }
});

您不一定需要从 setValue 调用中执行此操作。你也可以这样做:

const updateSomething = () => {
  if (shouldUpdate)
    setValue(newState);
}

答案:

作者头像

您可以尝试一些简单的方法,例如:

setValue(!value)

这只会改变布尔状态,从假值传递到真值,反之亦然。

我希望它可以帮助。