【发布时间】:2016-01-11 22:12:21
【问题描述】:
在使用 ES6 语法时,将 firebase 数据加载到 React 项目中的“最佳实践”是什么? es6 不支持 mixin,所以 reactfire 似乎不是一个选项
我采用了这种方法,但它确实不太优雅,我想听听一些可能的解决方案来解决这个问题。 this.items 在构造方法中声明为this.items = []
componentWillMount() {
this.firebaseRef = new Firebase(SETTINGS.FIREBASEURL + 'todos');
let self = this;
this.firebaseRef.on('child_added', function(snapshot) {
self.items.push(snapshot.val());
self.setState({data: self.items});
});
}
componentDidMount() {
let self = this;
let intVal = setInterval(function() {
if (self.items.length > 0){
self.setState({data: self.items});
self.forceUpdate();
clearInterval(intVal);
}
}, 200);
}
componentWillUnmount() {
this.firebaseRef.off();
}
render() {
console.log(this.state.data);
return <p>Hello, Kitty</p>;
}
当我将它加载到浏览器中时,我的数据被更新了两次。如何避免使用forceUpdate() 来显示我的state.data?
【问题讨论】:
-
您不必在
componentDidMount()中执行任何操作。每当添加一个孩子时,您已经调用了setState(),它将更新 UI 中的组件。如果这不起作用,您可以设置一个显示问题的 jsfiddle/jsbin 吗?