求助,关于flatlist 第一个渲染数据以后为什么会触发的问题



  • 我的初始list 是空数组
    0_1543901645270_75a2f100-b75c-4fd5-aa7c-b1338554be84-image.png
    我在componentWillMount 阶段请求了第一页数据
    0_1543901675912_06c9e2b5-aefc-4385-9728-e70587a0d010-image.png
    请求数据的函数
    0_1543901892828_9cddf705-2d45-4747-9a5f-42a3c7c54858-image.png
    数据请求完毕并且渲染完成以后 , flatlist的上拉加载触发了 他请求了第二页
    0_1543901723549_bd4ebef5-1ee7-4490-9474-6b392f120ad0-image.png
    0_1543901731617_1dd7002f-d57a-4d0d-864e-14f20f0b1d12-image.png
    如果我在componentWillMount 不请求第一页 ,那 flatlist 也不会触发上拉。 他就等你请求完 然后请求第二页



  • 我看别人的例子,并没有去操作关于第一次的渲染的问题



  • 第一次加载如果不足一屏,那么当然也是end reached了,所以也会触发
    例子是例子,实际的逻辑都需要考虑自己过滤重复/密集触发的事件。即便不考虑第一次加载,用户反复去拉的情况总是有的吧?



  • @晴明 但是他是在获取数据以后,也就是第一页渲染完毕,这时候页面上已经有10条数据了,反复去拉的请求 isLoading 可以过滤, 组件挂载完成就触发我可以理解,但是他是在页面上有数据了,并且 第二次render执行完, 他怎么会触发到底呢
    0_1543903616765_c6546b10-b005-4c8c-8a58-4ec31855e9a5-image.png
    而且加载更多的时候 有两个条件 有更多 ,并且不在请求更多的状态
    0_1543903672653_ae9f70af-198f-4f65-9fba-04746028fe04-image.png



  • 所以10条到底是不是满屏?不是满屏就符合预期咯?



  • @晴明 两条就满屏了,因为是一个帖子的样式 有标题和图片 还有一段描述。是不是因为开发环境卡的原因呢



  • 得看具体代码分析了



  • 想知道有没有结果,我的也是这种情况



  • 我的经验是,在flatList外层要有一个固定的高度的包裹;
    在我的图片中,ListUpLoad就是一个flatList封装的组件; commonStyle.scrollContainer这个就是外层的样式;以前的版本我听人说是不可以用flex: 1作为这个包裹的固定高度,但是我现在是0.60.5版本,我的就是flex:1,我的可以;你可以这样试试
    0_1571207209889_eb225596-5105-4a94-afc2-5f8a36514701-image.png
    0_1571207398990_264a81b9-0375-46c3-8bf3-edb734916802-image.png

    另外我想问一下,你的RN是哪个版本,我看你的截图是控制台截图;RN怎么样可以用控制台输出,有没有一些博客地址啊,或者文档啥的,方便分享下吗;谢谢🙏



  • 同样遇到这种情况,当用户上拉到最后一页,切换其他页面,再回到这个页面,就会自动触发上拉加载。


Log in to reply