ReactNative ListView无法刷新,直到滑动一下

ReactNative ListView无法刷新,直到滑动一下ListView,
这里不得不吐槽下,娘的,facebook从0.1左右的版本就有这个bug,到0.41版本了,这个问题还没有个官方的解决方案。。。

这里借用了官方的一张图:

ReactNative ListView无法刷新,直到滑动一下_第1张图片
renderbug

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,庆祝一下...

参考链接:
https://github.com/facebook/react-native/issues/1831

你可能感兴趣的:(ReactNative ListView无法刷新,直到滑动一下)