我有一个从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
完成之前,您有什么办法可以阻止其他进程吗?
答案 0 :(得分:0)
我们可以尝试的两种方法
在异步调用结束后尝试使用加载setState useEffect()。基于该值,您可以触发getAddedMessage 呼叫。
或者在完成该数组后将消息放入数组中 为useEffect()
答案 1 :(得分:0)
在您的代码中,newMessage是useEffect的依赖项,每当它为消息设置setState时,它将再次触发useEffect。因此,为避免这种情况,请制作另一个方法并从useEffect调用该方法,以避免useEffect中的依赖项
const completeProcess = () =>
{
async method 1
async method 2
async method 3
}
useEffect(() => {
completeProcess();
},[])