反应条件动作 - useEffect vs if 语句

Posted

技术标签:

【中文标题】反应条件动作 - useEffect vs if 语句【英文标题】:React conditional action - useEffect vs an if statement 【发布时间】:2022-01-14 17:16:47 【问题描述】:

React 相对较新,遇到了一些我不确定答案的问题。如果你有条件动作,useEffect 和只有 if 语句有区别吗?

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


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

据我了解,当状态更新 itemAdded 时,它会重新渲染调用 if 语句并执行代码的组件。在第二种情况下,由于 itemAdded 是一个依赖项,只要 itemAdded 发生更改,它就会被调用。对我来说,这两种情况似乎具有相同的效果。两者有区别吗?

【问题讨论】:

【参考方案1】:

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

if 语句 在每次渲染时都会执行,但 useEffect 仅根据其依赖项(数组中的项)执行。

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

【讨论】:

以上是关于反应条件动作 - useEffect vs if 语句的主要内容,如果未能解决你的问题,请参考以下文章

让useEffect监视条件并使其仅触发一次

深度反应useEffect / useEffect的使用?

反应 useEffect 和 useRef

反应 useEffect 比较对象

反应 useEffect 和 setInterval

为两个条件构造一个 if 语句的最佳方法是啥,每个条件都有一个动作,并且两者都有一个动作?