我使用REACTFIRE加载大量数据(超过1500个类别)。这就是我如何将数据绑定为数组的方式:
var ContentTable=React.createClass({
mixins: [ReactFireMixin],
getInitialState: function(){
return{firebaseRefArray:[]};
},
componentWillMount: function() {
//reference to firebase
var firebaseRef=firebaseAuthUtils.getRef();
this.bindAsArray(firebaseRef.child("Categories"),"firebaseRefArray");
},
render:function(){
return (<Table>
<thead>
<tr>
<th>ID</th><th>Name</th>
</tr>
</thead>
<tbody>
{this.state.firebaseRefArray.map(function(firebaseRef){
return (<tr>
<td> {firebaseRef[".key"]}</td>
<td> {firebaseRef.name}</td>
</tr>
)
}.bind(this))}
</tbody>
</Table>);
}});
不幸的是,这需要大量的时间,有时我的应用程序会崩溃,我想知道是否有更好的方法(不分页)。当我使用时,我使用了“子添加”事件来追加数据,并在合理的时间内加载数据。我能用REACTFIRE做一些类似的事情吗?
编辑:,所以它似乎没有增量地添加数据,而是一次又一次地添加数据,直到加载了所有的数据。有办法解决这个问题吗?
我尝试过如下所示的shouldComponentUpdate,但它根本不呈现。通过日志记录,我知道数组在不断增长,但是比较没有显示它们在任何两次中都是不同的。这就好像prevstat.firebaseRefArray和当前的state.firebaseRefArray正在以相同的速度增长,所以条件总是错误的。
shouldComponentUpdate:function(prevProps,prevState){
return (this.state.firebaseRefArray!==prevState.firebaseRefArray)
},我也尝试了条件this.state!==prevState,这太慢了,呈现超过1500次(到目前为止)。有谁有什么建议吗?似乎奇怪的是,这种反应没有办法处理这么多的数据。也许我漏掉了什么?
发布于 2016-03-28 20:30:08
尝试使用简单的REST请求读取数据,以JSON的形式获取数据,然后将其加载到数组中。这应该更快,但不会提供双向绑定。请参阅REST API文档
https://stackoverflow.com/questions/36268927
复制相似问题