reactjs - 在 React 中使用 Firebase Promise setState

标签 reactjs firebase promise firebase-realtime-database

如何在 React 组件内设置状态?

我收到错误消息:

Uncaught TypeError: Cannot read property 'setState' of null

这里是组件代码 list :

class MessageList extends React.Component {
 constructor(props){
 super(props);
 this.state = {
   messages: []
 };

 var firebaseRef = firebase.database().ref();
 firebaseRef.once('value')
  .then(function(dataSnapshot) {
      this.setState({
        messages: messages
      });
   });
 }

 render() { ... }

}

最佳答案

this指的是promise范围。要么使用粗箭头函数(es6)

var firebaseRef = firebase.database().ref();
firebaseRef.once('value')
  .then((dataSnapshot) => {
      this.setState({
        messages: messages
      });
   });

或者在 promise 之前创建一个副本

constructor(props){
 super(props);
 this.state = {
   messages: []
 };
 var that = this; 
 var firebaseRef = firebase.database().ref();
 firebaseRef.once('value')
  .then(function(dataSnapshot) {
      that.setState({
        messages: messages
      });
 });

最后一个选项,您可以将其绑定(bind)到 promise :

firebaseRef.once('value')
 .then(function(dataSnapshot) {
     this.setState({
         messages: messages
     });
}).bind(this)

关于reactjs - 在 React 中使用 Firebase Promise setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39191001/

相关文章:

ruby-on-rails-4 - 向 Rails React 组件包装 div 添加样式

reactjs - 使用 Apollo 查询闪烁

database - Firebase 值(value)没有随 Swift 增加?

firebase-messaging - 致命的 : failed to find callback

ios - 从Firebase动态链接进行的网址检测未返回iOS

javascript - 使用异步等待的 REST API 调用

javascript - 如何重构以下代码以使用 q?

reactjs - Redux 工具包,缺少调度 thunk 类型

reactjs - React-hook-form 输入类型值不起作用

Javascript 作用域、内联函数和异步操作