美文网首页
ReactNative ListView无法刷新,直到滑动一下

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

作者: 滕的世界 | 来源:发表于2017-01-06 15:53 被阅读754次

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

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

    renderbugrenderbug

    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无法刷新,直到滑动一下

          本文链接:https://www.haomeiwen.com/subject/lxztbttx.html