ReactNative ListView无法刷新,直到滑动一下ListView,
这里不得不吐槽下,娘的,facebook从0.1左右的版本就有这个bug,到0.41版本了,这个问题还没有个官方的解决方案。。。
1.滑动一像素【非正统的解决方案 】
既然滑动一下能解决问题,那就在合适的位置调用下滑动
这种方案即使能用,也只能说是非亲生的。。。
let listViewScrollView = this.refs.listView.getScrollResponder();
listViewScrollView.scrollTo(1);
listViewScrollView.scrollWithoutAnimationTo(80);
listViewScrollView.scrollWithoutAnimationTo(-80);
参考链接: https://github.com/facebook/react-native/issues/1831
2.removeClippedSubviews
很多人说removeClippedSubviews = false
可以解决问题
但是涉及到性能,在数据很多的时候,这种方案明显也不靠谱
3.正统的解决方案 【非正统的解决方案 】
RCTView.m中
if (!CGRectContainsRect(testView.bounds, testRect)) {
clipView = testView;
clipRect = CGRectIntersection(testView.bounds, testRect);
}
更改为
if (!CGRectContainsRect(testView.bounds, testRect) && !CGRectIsEmpty(CGRectIntersection(testView.bounds, testRect))) {
clipView = testView;
clipRect = CGRectIntersection(testView.bounds, testRect);
}
只需要一句话
!CGRectIsEmpty(CGRectIntersection(testView.bounds, testRect))
整个世界安静了......
我使用的是【RN0.39.2】
版本,解决后,目前没有出现过,解决了一个困扰我一生的Bug
来杯YinNiao,庆祝一下...
网友评论