反应组件不更新状态

时间:2015-10-20 16:14:30

标签: reactjs firebase

当我控制日志状态时它返回undefined但在我的react开发工具中我可以看到生成的数组。 这是组件:

Testqueue

我做错了什么?

2 个答案:

答案 0 :(得分:0)

这是因为你正在ajax回调上设置状态,该回调在初始渲染(componentDidMount)之后完成。

答案 1 :(得分:0)

您可能想要另一个状态变量来跟踪加载状态:

var Categories = React.createClass({
  getInitialState: function () {
    return {
      loaded: false,
      items: []
    };
  },

  componentWillMount: function (){
    var  firebaseRef = new Firebase("https://rapifood.firebaseio.com/categorias");
    firebaseRef.on("child_added", function(dataSnapshot) {
      this.setState({
        loaded: true,
        items: this.state.items.concat(dataSnapshot.val())
      });
    }.bind(this));
  },

  componentWillUnmount: function() {
    // Don't forget to remove the Firebase subscription here.
  }

  render: function() {
    if (!this.state.loaded) {
      return <div>Loading...</div>;
    }
    // Now you can render the list of items here.
  },
});