useEffect周期的操作

时间:2020-03-31 16:15:44

标签: reactjs firebase react-native

我有一个从Firebase检索消息的功能:

getAddedMessages()

此方法仅接收来自数据库的邮件的 UID

此方法调用另一个函数:

followThePik(messageId)

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

完成此操作后,我会更新“状态”中的信息

setNewMessage(message)

将消息的内容保存到状态

我准备了 useEffect ,该功能在 newMessage 更新时执行

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

useEffect 由多种方法组成

信息:

一次可以有几则新消息

我有一个问题,就是在它完成对所有useEffect的调用之前,需要执行其他方法

我有一条消息保存在状态newMessage中。在useEffect中使用它之前,需要先插入另一个,并且作为最后的选择,该过程仅适用于最后一条消息

主要问题

useEffect完成之前,您有什么办法可以阻止其他进程吗?

2 个答案:

答案 0 :(得分:0)

我们可以尝试的两种方法

  1. 在异步调用结束后尝试使用加载setState useEffect()。基于该值,您可以触发getAddedMessage 呼叫。

  2. 或者在完成该数组后将消息放入数组中 为useEffect()

  3. 迭代

答案 1 :(得分:0)

在您的代码中,newMessage是useEffect的依赖项,每当它为消息设置setState时,它将再次触发useEffect。因此,为避免这种情况,请制作另一个方法并从useEffect调用该方法,以避免useEffect中的依赖项

const completeProcess = () => 
{
   async method 1
   async method 2
   async method 3
}

useEffect(() => {
   completeProcess();
},[])