React setState无效,收到错误

时间:2017-01-25 15:51:54

标签: java reactjs react-native setstate

尝试使用setState时出现以下错误:

VARCHAR (64),null

我不知道自己哪里出错了,请有人指出我正确的方向。 这是我的代码:

{{1}}

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为这不再是组件的上下文。你需要这个组件。检查我是如何抓住组件的。

export default React.createClass({
    getInitialState: function () {
      return {
        name: '',
        address: '',
        phone: '',
        email: '',
     }
   },

  componentWillMount(){
    this.getUserDetails();
  },

  getUserDetails: function(){
    var that  = this
    var personID = 'ABC123'; 
    if(personID.length > 0){
      new Firebase('https://xxxxxxxxxx.firebaseio.com/users/' + personID).on('value', function(snap) {

        that.setState({
          name: snap.val().Name + " " +snap.val().Surname
        });

      });
     }
  },
  render() {
    return ( ... );
  }
});

答案 1 :(得分:2)

就像人们上面所说的那样,如果您只是将其编辑为箭头功能,它会将this的上下文从Firebase更改为外部范围 - 这是组件。

  new Firebase('https://xxxxxxxxxx.firebaseio.com/users/' + personID).on('value', (snap) => {

    this.setState({
      name: snap.val().Name + " " +snap.val().Surname
    });

  });