我的应用程序出现一些奇怪的行为。 当我调试时,我的componentDidMount中的算法(由一长串承诺组成)在大多数情况下都可以正常工作。
但是,当我不进行调试时,出现了一个问题,当我在promise中无法设置状态。我的代码具有“加载”状态,当检索到数据并且输出准备就绪时,该状态将变为false。此状态永远不会改变。
我部分担心firebaseApp.database()。ref()...永远不会被调用。但是由于我没有调试,所以没有办法告诉。有没有办法查看是否在不使用调试器的情况下踏入了函数?
我尝试放置setState({loading:false});在我的第一个诺言电话的顶部,但是即使这样,它也不会改变。如果我将setState调用完全放在promise链之外,那么它确实可以工作,但是由于尚未检索到任何数据,所以无法将其放置在那里。
但是,在使用chrome进行调试时,这不是问题,状态可以很好地更改。我知道调试器和本机解释器之间存在一些差异,例如:日期对象和比较器布尔值。我不确定这可能是什么问题。
一些参考代码:
let that = this;
firebaseApp.database().ref("Restaurant_Tags").orderByChild("Author_ID")
.equalTo("test").once('value').then(function(snap){
if(snap.val() != null){
that.setState({loading:false});
firebaseApp.database().ref("Restaurant_Tags").orderByChild("Author_ID")
.equalTo("test").once('value').then(function(snap){
. . . etc
的
let that = this;
是因为我无法在诺言中访问它。我尝试将设置状态直接放在
下let that= this;
以及
firebaseApp.database().ref("Restaurant_Tags").orderByChild("Author_ID")
.equalTo("test").once('value').then(function(snap){
当然,在算法的底部,已检索到数据。
有人对此有任何见识吗?