【发布时间】:2016-03-03 08:16:22
【问题描述】:
我添加了“喜欢”帖子的功能。 突然间,react-native 正以蜗牛般的速度爬行。 我是新手,所以不确定何时何地正确设置状态。
我应该如何在 listView 表中正确附加喜欢一行的功能??
代码如下...
要点击的“喜欢”文本是这样的......
<Text onPress={this.likePost.bind(this, feeditem.post_id)}>{feeditem.likes} likes</Text>
那么“点赞”功能就是这个……
likePost(id){
if(this.state.feedData!=null){
var d = this.state.feedData;
// Find row by post_id
var ix = d.findIndex(x => x.post_id===id);
// Only set state if user hasn't already liked
if(d[ix].you_liked==0){
// Mark as liked, and increment
d[ix].you_liked=true;
d[ix].likes = parseInt(d[ix].likes)++;
// Set the state after liking
this.setState({
feedData: d,
feedList: this.state.feedList.cloneWithRows(d)
});
}
}
}
它可以正常工作,并且可以正确更新数据,并且可以很好地显示在开发工具中。但是,新状态的视觉呈现需要一分钟多的时间。
我更新状态是否错误? setState 的成本是多少?我认为 react 应该只是重新渲染它在虚拟 DOM 中看到的更改。为什么它看起来像是重新渲染我的整个 listView。为什么加载时间超过 1 分钟? (某处明显内存泄漏)??
另外,是否可以只增加“DOM”上的整数而不触发重新渲染?
【问题讨论】: