我已经通过setState绑定了,该怎么办?
enter image description here

TypeError:无法读取未定义的属性“ setState”

我正在使用RealTime Firebase和ReactJs

constructor() {
    super()
    this.app = firebase.initializeApp(firebase_config);
    this.database = this.app.database().ref().child('users');
    this.state = {
        users: []
    }
}
componentDidMount() {
  this.database.once("value", function(snapshot) {
      snapshot.forEach(function(data) {
          this.setState({users: data.val()})
      })
  });
}

render() {
   return (
    <BrowserRouter>
       <div className="App">
          <Navbar/>
          <Switch>
            <Route exact="exact" path='/' component={CampaingListClients}/>
          </Switch>
          <p>{this.state.users}</p>
       </div>
    </BrowserRouter>);
    }
}


TypeError:无法读取未定义的属性“ setState”

最佳答案

您可以通过两种方式解决setState未定义问题


将您的功能更改为箭头功能

componentDidMount() {
    this.database.once("value", snapshot => {
       snapshot.forEach(data => {
          this.setState({users: data.val()})
       })
    });
 }

如下绑定每个功能

  componentDidMount() {
     this.database.once("value", function(snapshot) {
         snapshot.forEach(function(data) {
             this.setState({users: data.val()})
         }.bind(this)}
     }.bind(this));
   }

关于javascript - 我有一个this.state,我需要通过setState传入我的componentDidMount,如何在setState中使用bind(this)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54615829/

10-13 04:48