m-pull-to-refresh icon indicating copy to clipboard operation
m-pull-to-refresh copied to clipboard

getScrollContainer不稳定(涉及ref),导致children创建多次的问题

Open lizongze opened this issue 5 years ago • 0 comments

getScrollContainer不应该有默认函数,只要定义了该函数,就不需要额外渲染一个ScrollContainer了

如果用户返回一个ref,这个ref只会在ComponentDidMount时才不为undefined,导致进入了需要渲染ScrollContainer的分支,ref取到后,又进入了不需要渲染ScrollContainer的分支,这时children就被多创建了一次。

情景:

  • 引发了我这边一个数据问题,数据不对了;

  • 我这边的一些操作可能在children第一次被创建时就走过了,然后走了些异步逻辑,回来发现相关引用都变成新的了,由于二次创建又走了相关的周期覆盖了最开始的引用。这时多个异步流程链里,前面的拿的是第一次的引用,后面的拿的是第二次的引用,从而引发了一些潜在的bug

临时解法:

          getScrollContainer={() => this.scrollViewRef || {}}

lizongze avatar Sep 29 '20 12:09 lizongze