如何解决如何使用reactjs渲染方法运行多个任务?
我是Reactjs的新手。我的render方法每次都从数据库中获取数据,并且停止所有其他活动的运行。它每毫秒获取数据,但其他功能都无法正常工作,例如setstate等如何从数据库中获取数据以及如何并行执行其他任务(例如setstate并将数据分配给数据库)。我正在使用firestore,所以我如何同时从数据库获取数据并将setdata存入数据库。
db.collection(this.state.user.email).doc(this.state.hisemail).get().then(docr =>{
// console.log(docr.data())
const tempss=docr.data().messages
// console.log("called")
const tempe=docr.data().name
this.setState({
messages:tempss,namesf:tempe
})
})
}
这存在于渲染方法中
submit=()=>{
this.setState({
messages:rew,namesf:nams
},()=>{this.waiting()})
}
waiting=()=>{
// console.log(this.state.messages,this.state.namesf)
db.collection(this.state.user.email).doc(this.state.hisemail).set({
messages: this.state.messages,name: this.state.namesf
},{ merge: true,merge:true });
}
这是在onclick上调用的函数,我已经编写了该函数,但该函数已被调用,但由于上面代码中的db方法在渲染中会导致setstate和db set不起作用
解决方法
setState不能在render函数中调用,因为您的组件将一次又一次地重新渲染(组件将执行render()函数),请在其他生命周期方法上使用逻辑,例如componentWillMount,componentWillReceiveProps等
您可以参考React官方文档中的有状态组件,以了解这一点
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。