繁体   English   中英

我有一个this.state,我需要通过setState传入我的componentDidMount,如何在setState中使用bind(this)?

[英]I have one this.state and i need pass in my componentDidMount with setState, how use bind(this) in setState?

我已经通过setState绑定了,怎么办? 在此处输入图片说明

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未定义问题

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

     componentDidMount() { this.database.once("value", snapshot => { snapshot.forEach(data => { this.setState({users: data.val()}) }) }); } 
  2. 如下绑定每个功能

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM