React 条件动作 - useEffect 与 if 语句

React conditional action - useEffect vs an if statement

React 相对较新,运行 进入我不确定答案的问题。如果您有条件操作,useEffect 和只有 if 语句有区别吗?

function Items() {
    [setItemAdded, itemAdded] = useState(false);
    
    if (itemAdded) {
      saveData();
      itemAdded = false;
    }

}

     useEffect(() => {
         if (itemAdded) {
             saveData();
             itemAdded = false;
         }, [itemAdded]);
          

根据我的理解,当状态更新时itemAdded,它会重新渲染调用条件语句并执行代码的组件。

在第二种情况下,由于 itemAdded 是一个依赖项,所以只要 itemAdded 发生变化,它就会被调用。对我来说,这两种情况似乎都具有相同的效果。两者有区别吗?

是的,绝对可以,您将通过添加另一个状态并更新它来看到不同之处。

if 语句 在每个渲染器上执行,但 useEffect 仅根据其依赖项(数组中的项目)执行。

我建议使用 useEffect 而不是 if 语句