【问题标题】:Operation of the useEffect cycleuseEffect循环的操作
【发布时间】:2020-03-31 16:15:44
【问题描述】:

我有一个从 Firebase 检索消息的函数:

getAddedMessages()

此方法仅接收来自数据库的消息的 UID

这个方法调用另一个函数:

followThePik(messageId)

该方法接受上一条消息中获取的messageId

完成后,我会更新 State 中的信息

setNewMessage(message)

将消息内容保存到State

我准备了 useEffect,它在 newMessage 更新时执行

useEffect(() => {
    //method 1
    //method async 2
    //method async 3
}, [newMessage]);

useEffect由各种方法组成

信息:

一次可以有多个新消息

我有这样一个问题,在它完成调用所有useEffect之前,执行了进一步的方法

我有一条消息保存在状态newMessage。在我在useEffect 中使用它之前,另一个人插入它,作为最后的手段,该过程仅适用于最后一条消息

主要问题

useEffect 完成之前,您可以做些什么来阻止进一步的进程?

【问题讨论】:

    标签: reactjs firebase react-native


    【解决方案1】:

    我们可以尝试两种方法

    1. 在异步调用结束后尝试使用加载 setState useEffect().根据值你可以触发 getAddedMessage 打电话。

    2. 否则在完成该数组后将消息放入数组中 为 useEffect() 迭代

    【讨论】:

      【解决方案2】:

      在您的代码中,newMessage 是 useEffect 的依赖项,每次它为消息设置状态时,它都会再次触发 useEffect。因此,为了避免这种情况,请创建另一个方法并从 useEffect 调用该方法,以避免在 useEffect 中的依赖

      const completeProcess = () => 
      {
         async method 1
         async method 2
         async method 3
      }
      
      useEffect(() => {
         completeProcess();
      },[])
      
      

      【讨论】:

        猜你喜欢
        • 2020-08-20
        • 1970-01-01
        • 2023-03-20
        • 2020-02-22
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 2013-08-15
        • 2012-06-01
        相关资源
        最近更新 更多