Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >React,Redux & Firestore变量可用性

React,Redux & Firestore变量可用性
EN

Stack Overflow用户
提问于 2019-07-25 05:43:11
回答 1查看 61关注 0票数 0

在React的componentDidMount中,我从associatedID匹配字符串的Firestore中调用一些数据。硬编码,一切正常,我们使用this.props.addStore将数据添加到Redux存储中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
firebaseApp.firestore().collection('stores').where("associatedID", "==", "LFQ3eJZdbCUrziyoKTV1fVapa2E3").get().then((snapshot)=>{
    snapshot.docs.forEach(doc => {
    let store = doc.data();

    //Tell redux
    this.props.addStore(store);
});
}).then(()=>{
    console.log(this.props.user.associatedID);
});

但是,如果要将该associatedID作为从Redux中提取的变量,那么我们将返回一个错误,即“where的第三个参数是未定义的”

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
firebaseApp.firestore().collection('stores').where("associatedID", "==", this.props.user.associatedID)

但是在最初的代码中,您会注意到在最终的.then函数中,有一个this.props.user.associatedID的控制台日志,它工作得很好。

这表明Redux在应用组件要使用的状态值时存在轻微的延迟/乱序/任何情况。或者从外行人的角度来说,组件在componentDidMount中需要更多的时间才能使用'this.props.user‘变量。有什么办法不用黑我就能绕过这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 06:50:05

好的,这实际上是可以通过比较componentDidUpdate生命周期方法而不是componentDidMount来解决的。改编自答案Re-render React component when prop changes

componentDidMount只是被调用得太快(在组件访问redux状态之前),所以对防火墙的调用试图使用一个还不存在的变量。通过每次检查组件更新,我们可以看到它何时最终获得对该变量的访问权。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
componentDidUpdate(){
    if(this.props.user.associatedID){
        console.log("Ok now we're good");
    }
    else{
        console.log("Still waiting!");
    }
}

在我的控制台里,我可以看到四个“还在等着”,然后它终于转到“好了,我们好了”。

最终更新--实际上最好用ComponentWillReceiveProps (现在不再推荐)和它的替代getDerivedStateFromProps来解决。就像在ComponentDidUpdate中一样,解决方案最终可能会被多次调用。然而,在getDerivedStateFromProps中,我们可以进行一次比较,并呼叫消防局。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57203423

复制
相关文章
发送电子邮件
在即时通信软件如此发达的今天,电子邮件仍然是互联网上使用最为广泛的应用之一,公司向应聘者发出录用通知、网站向用户发送一个激活账号的链接、银行向客户推广它们的理财产品等几乎都是通过电子邮件来完成的,而这些任务应该都是由程序自动完成的。
用户8442333
2021/05/20
2.3K0
Spring发送电子邮件
Spring基于javax.mail封装了一套用于发送电子邮件的API,位于org.springframework.mail包下,下面将介绍下发送普通文本邮件和基于thymeleaf模版的邮件。
布禾
2020/10/29
1.8K0
Spring发送电子邮件
Spring Boot发送电子邮件
通过使用Spring Boot RESTful Web服务,可以发送包含Gmail传输层安全性的电子邮件。在本章中,详细了解如何使用此功能。
黑洞代码
2021/10/14
1.4K0
使用 PHP发送电子邮件
PHP 运行邮件函数需要一个已安装且正在运行的邮件系统(如:sendmail、postfix、qmail等)。所用的程序通过在 php.ini 文件中的配置设置进行定义。
小颖club
2022/04/11
2.5K0
PHP发送电子邮件代码
注意:PHP 需要一个已安装且正在运行的邮件系统,以便使邮件函数可用。所用的程序通过在 php.ini 文件中的配置设置进行定义。
用户1503405
2021/09/27
1.8K0
PHP 使用 phpmailer 发送电子邮件
phpMailer 是一个非常强大的 ph p发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。
OwenZhang
2021/12/08
2.1K0
PHP 使用 phpmailer 发送电子邮件
利用Python自动发送电子邮件
收发邮件几乎是每个人每天都需要做的一件事情,对于一些固定每天需要发送的邮件或者是同时需要发送好几十好几百份的时候,我们可以考虑借助Python来自动发送邮件。
张俊红
2019/03/06
1.4K0
利用Python自动发送电子邮件
python3 发送电子邮件
使用python3发送电子邮件,我之前在网上找了好几篇文章不论是都不行,最后在网上找到这篇文章了!
py3study
2020/01/03
8720
使用Python发送自定义电子邮件
电子邮件仍然是事实。 尽管存在各种弊端,但它仍然是向大多数人发送信息的最佳方法,特别是允许邮件排队等待收件人的自动方式。
用户7886150
2021/01/28
2.9K0
Python: 通过QQ邮箱发送电子邮件
文章背景:自学Python编程快速上手中关于发送电子邮件的章节。本文讲述如何通过Python,使用QQ邮箱发送电子邮件。
Exploring
2022/09/20
3.2K0
Python: 通过QQ邮箱发送电子邮件
QQ授权,接收代码发送的电子邮件
1.代码(两处修改自己的QQ+授权码),授权码开启权限后获取 package com.itqf.Utils; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.net.Inet4Address; import java.util.Properties;
2020/10/23
1.6K0
QQ授权,接收代码发送的电子邮件
crmeb客服消息发送失败
2.检查是否本服务器已经安装过一套程序。 如果安装多套需要修改端口,详情修改端口 最后重启workerman
CiiLii西里网
2023/04/19
1K0
crmeb客服消息发送失败
.NET Core 使用MailKit发送电子邮件
发送邮件通知的功能在各种系统里都很常见。我的博客也能在有新评论、新回复,或者文章被其他网站引用时向管理员发送邮件。那么在.NET Core里,如何实现发送电子邮件呢?
Edi Wang
2019/07/08
6K0
.NET Core 使用MailKit发送电子邮件
离线安装Superset 0.37
上文提到了Superset 0.37的在线安装方式,只需要更新pip,然后pip install就可以了。但是在生产环境中,特别是内网环境中,很多时候是没有外网的,这时候就需要采取离线安装的方式。
大数据流动
2020/09/18
2.4K1
使用Postfix,Dovecot和MySQL发送电子邮件
在本指南中,您将学习如何在Debian或Ubuntu上使用Postfix,Dovecot和MySQL设置安全的虚拟用户邮件服务器。我们将解释如何创建新的用户邮箱以及如何在配置的域中发送或接收电子邮件。
Techeek
2018/09/18
3.8K0
使用Postfix,Dovecot和MySQL发送电子邮件
java实现邮件发送功能_电子邮件是啥
public static void main(String[] args) throws IOException {
全栈程序员站长
2022/11/01
1.1K0
[日常] 腾讯云发送邮件失败问题
1. 在腾讯云上的程序发送邮件失败 , 是因为腾讯云封禁了25端口 2.使用telnet测试连接第三方smtp服务的25端口 , 均失败 3.进入腾讯云控制台 , 申请解封25端口 4.解封完成后 ,
唯一Chat
2019/09/10
7.8K0
[日常] 腾讯云发送邮件失败问题
常见邮件发送失败原因分析以及解决方法是_手机邮箱发送失败
我发到 sina 的邮件会被退回,并提示remote server said: 553 Spam Mail http://mail.sina.com.cn/FAQ.html;错误,怎么办?
全栈程序员站长
2022/11/10
5.1K0
常见邮件发送失败原因分析以及解决方法是_手机邮箱发送失败
PHP 使用 phpmailer 发送电子邮件 以及封装方法
phpMailer 是一个非常强大的 ph p发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。
Inkedus
2020/04/16
3.4K0
PHP 使用 phpmailer 发送电子邮件 以及封装方法
点击加载更多

相似问题

超集load_examles失败

135

超集oauth ssl证书验证失败

121

如何发送查询集抛出的超方法?

12

使用link_with使我的项目失败,CocoaPods 0.37

36

电子邮件发送失败

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文