如何实现无限加载更多?append到state多了就回卡?

#11

每个子元素都是独立组件,但是,子元素里面有很多按钮,需要操作state

#12

可以把方法传进去

#13

我写的react-cnode列表页,数据多了就卡卡的,晚上我试试按照楼上的方法,能不能优化性能

#14

不如把Component怎么写的贴出来看看,理论上确实只会render有差异的东西

#15

已经验证过了,react不是指刷新有差异的数据~之前的数据,也会重新渲染~

#16

不然你试试把key值设置为数据的id

#17

shouldComponentUpdate返回false是不会渲染的,实际上,你只要判断nextProps.id 和 this.props.id就可以了

#18

刚试了一下楼上的方案,性能确实是优化不少

#19

楼主肯定是没加 key,加了唯一 key 还会是这样吗

#20

没加 key?

#21

实在太多了可以考虑不渲染屏幕外的元素,Discourse (就这个论坛)的做法是内容多了就把屏幕外的元素变成空 div ,这样可以降低渲染压力。虽然它用的是 Ember ,但思路是前端应用相通的。

#22

加了

#23

用唯一key一样会触发render的,除非子组件是纯函数,楼主的子组件有state,明显不是。
必须手动执行shouldComponentUpdate进行判断。
另外即使纯函数,在另一种情况下仍然会执行render,就是某个props的事件里使用了bind,例如:

<Input onChange={this.handleChange.bind(this)} ... />

每次都会执行Input的render,因为每次bind都是返回的一个新的函数。

#24

难道需要这个?https://github.com/bvaughn/react-virtualized

#25

这个不好做呀~这个论坛的列表几乎高度一致,可是,一些其它列表,并非只有标题,高度不一致。

#26

判断元素是否在可视区就行了

#27


#28


解决~

#29

你好,请教一下怎么解决的。现在也有这样一个需求,正在找解决方案

#30

无限滚动列表是由同一个组件数组组成的,

在这个组件的 shouldComponentUpdate 函数里直接 return false.