【问题标题】:abort state set with React useState hook function call使用 React useState 钩子函数调用设置中止状态
【发布时间】:2020-08-06 11:27:37
【问题描述】:

使用旧的基于类的 this.setState() 方法,我们可以从传递给 setState 的函数中返回 null,以告诉 React 不要对特定的 setState 调用执行任何操作:

this.setState(({ value }) => {
  if (value === 0) {
    return null;
  } else {
    return { value: value - 1 };
  }
});

我试图了解使用 React Hooks 执行此操作的正确方法是什么,以下是否正确?

const [x, setValue] = useState(0);
setValue(value => {
  if (value === 0) {
    return value;
  } else {
    return value - 1;
  }
});

如果我通过原始值,我会尽量不触发重新渲染。

【问题讨论】:

标签: javascript reactjs


【解决方案1】:

看起来像是 useEffect 钩子的工作:

useEffect(() => {
setValue(value => {
  if (value === 0) {
    return value;
  } else {
    return value - 1;
  }
});
}, [x])

仅当x 更改时才会运行效果。

【讨论】:

  • 我正在处理对象,所以不幸的是它不是那么简单。
  • 怎么样? x 在您的示例中是一个数字。
  • 这是一个简化的例子,不过我正在寻找一个通用的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 2021-08-24
  • 2020-11-30
  • 2023-03-14
  • 2020-05-23
  • 2020-05-12
相关资源
最近更新 更多