Closed zzq1101921989 closed 2 years ago
当我看了一下源码,问题可能出在 这一部分,因为我的页码是 从 第二页更新 到第一页的 并且刚好就是等于 1
if (pageNum < oldPageNUm && pageNum == 1) {
this.initList = []
this.setState({
innerScrollTop: 1,
})
this.setState({
wholePageIndex: 0,
isComplete: false,
twoList: [],
}, () => {
if (nextProps.list?.length) {
this.formatMultiList(nextProps.list, pageNum)
} else {
this.handleComplete()
}
})
Taro.nextTick(() => {
this.setState({
innerScrollTop: 0,
})
})
}
这图是我加载到第二页的时候数据的构成
这图是我筛选某个条件之后,数据的构成,出现莫名的undefined
还有更奇怪的就是list里面竟然会出现高度
有一个问题,当数据源从多变成少的时候,scrollView的滚动高度,不会随着改变,并且上滑的时候 会疯狂的闪屏
const isLowerThreshold = total >= query.rowsPerPage;
<TaroVirtualList list={list} listId='legworkId' segmentNum={isLowerThreshold ? query.rowsPerPage : total} autoScrollTop={autoScrollTop} listType='multi' pageNum={query.pageNo} className={styles.indexListContainer} scrollViewProps={{ onScrollToLower: onPageScrollToLower, }} onRender={(item, index) => { return <ListItem data={item} index={index} />; }}
isLowerThreshold 想着如果获取到的数据只有个位数的话,每次展示的条数也应当进行调整,当时发现没什么用 autoScrollTop也是为了点击筛选的时候自动滚动到顶部设置的
大佬有空帮忙看看这个问题
segmentNum是无法动态去修改的,因为如果动态去给数据分页,会导致分页错乱,看了你的代码意思就是说如果total没有一页数据量,你就将segmentNum=total,其实没必要啊,我认为这个操作是个无效操作,也起不到提升性能的作用,其次autoScrollTop如果不设置的话,组件是会根据list的改变去将页面置顶的,设置了的话,你就要自己去控制了
有一个问题,当数据源从多变成少的时候,scrollView的滚动高度,不会随着改变,并且上滑的时候 会疯狂的闪屏 const isLowerThreshold = total >= query.rowsPerPage;
<TaroVirtualList list={list} listId='legworkId' segmentNum={isLowerThreshold ? query.rowsPerPage : total} autoScrollTop={autoScrollTop} listType='multi' pageNum={query.pageNo} className={styles.indexListContainer} scrollViewProps={{ onScrollToLower: onPageScrollToLower, }} onRender={(item, index) => { return <ListItem data={item} index={index} />; }}
isLowerThreshold 想着如果获取到的数据只有个位数的话,每次展示的条数也应当进行调整,当时发现没什么用 autoScrollTop也是为了点击筛选的时候自动滚动到顶部设置的 大佬有空帮忙看看这个问题
segmentNum是无法动态去修改的,因为如果动态去给数据分页,会导致分页错乱,看了你的代码意思就是说如果total没有一页数据量,你就将segmentNum=total,其实没必要啊,我认为这个操作是个无效操作,也起不到提升性能的作用,其次autoScrollTop如果不设置的话,组件是会根据list的改变去将页面置顶的,设置了的话,你就要自己去控制了
是的,后面代码我改动了一下,autoScrollTop为false,并且在 scrollViewProps中的scrollTop给一个0-1的随机数进行置顶效果,但是在服务端分页的时候,分页到第二页的时候,后续进行筛选功能操作,我看到您开发的组件实例内部的state就出现了意外的数值了
有一个问题,当数据源从多变成少的时候,scrollView的滚动高度,不会随着改变,并且上滑的时候 会疯狂的闪屏 const isLowerThreshold = total >= query.rowsPerPage;
<TaroVirtualList list={list} listId='legworkId' segmentNum={isLowerThreshold ? query.rowsPerPage : total} autoScrollTop={autoScrollTop} listType='multi' pageNum={query.pageNo} className={styles.indexListContainer} scrollViewProps={{ onScrollToLower: onPageScrollToLower, }} onRender={(item, index) => { return <ListItem data={item} index={index} />; }}
isLowerThreshold 想着如果获取到的数据只有个位数的话,每次展示的条数也应当进行调整,当时发现没什么用 autoScrollTop也是为了点击筛选的时候自动滚动到顶部设置的 大佬有空帮忙看看这个问题
segmentNum是无法动态去修改的,因为如果动态去给数据分页,会导致分页错乱,看了你的代码意思就是说如果total没有一页数据量,你就将segmentNum=total,其实没必要啊,我认为这个操作是个无效操作,也起不到提升性能的作用,其次autoScrollTop如果不设置的话,组件是会根据list的改变去将页面置顶的,设置了的话,你就要自己去控制了
是的,后面代码我改动了一下,autoScrollTop为false,并且在 scrollViewProps中的scrollTop给一个0-1的随机数进行置顶效果,但是在服务端分页的时候,分页到第二页的时候,后续进行筛选功能操作,我看到您开发的组件实例内部的state就出现了意外的数值了
服务端分页的时候注意不要修改list的引用,而是向list去concat数据,本来就是要出现高度的哈,原理就是用高度占位的,可以有时间再看看源码哈哈
有一个问题,当数据源从多变成少的时候,scrollView的滚动高度,不会随着改变,并且上滑的时候 会疯狂的闪屏 const isLowerThreshold = total >= query.rowsPerPage;
<TaroVirtualList list={list} listId='legworkId' segmentNum={isLowerThreshold ? query.rowsPerPage : total} autoScrollTop={autoScrollTop} listType='multi' pageNum={query.pageNo} className={styles.indexListContainer} scrollViewProps={{ onScrollToLower: onPageScrollToLower, }} onRender={(item, index) => { return <ListItem data={item} index={index} />; }}
isLowerThreshold 想着如果获取到的数据只有个位数的话,每次展示的条数也应当进行调整,当时发现没什么用 autoScrollTop也是为了点击筛选的时候自动滚动到顶部设置的 大佬有空帮忙看看这个问题
segmentNum是无法动态去修改的,因为如果动态去给数据分页,会导致分页错乱,看了你的代码意思就是说如果total没有一页数据量,你就将segmentNum=total,其实没必要啊,我认为这个操作是个无效操作,也起不到提升性能的作用,其次autoScrollTop如果不设置的话,组件是会根据list的改变去将页面置顶的,设置了的话,你就要自己去控制了
是的,后面代码我改动了一下,autoScrollTop为false,并且在 scrollViewProps中的scrollTop给一个0-1的随机数进行置顶效果,但是在服务端分页的时候,分页到第二页的时候,后续进行筛选功能操作,我看到您开发的组件实例内部的state就出现了意外的数值了
服务端分页的时候注意不要修改list的引用,而是向list去concat数据,本来就是要出现高度的哈,原理就是用高度占位的,可以有时间再看看源码哈哈
所以意思就是不在需要去setState我的list追加数据,而是直接concat,然后直接通过一个this.forceUpdate强制刷新一下就好了是吗
有一个问题,当数据源从多变成少的时候,scrollView的滚动高度,不会随着改变,并且上滑的时候 会疯狂的闪屏 const isLowerThreshold = total >= query.rowsPerPage;
<TaroVirtualList list={list} listId='legworkId' segmentNum={isLowerThreshold ? query.rowsPerPage : total} autoScrollTop={autoScrollTop} listType='multi' pageNum={query.pageNo} className={styles.indexListContainer} scrollViewProps={{ onScrollToLower: onPageScrollToLower, }} onRender={(item, index) => { return <ListItem data={item} index={index} />; }}
isLowerThreshold 想着如果获取到的数据只有个位数的话,每次展示的条数也应当进行调整,当时发现没什么用 autoScrollTop也是为了点击筛选的时候自动滚动到顶部设置的 大佬有空帮忙看看这个问题
segmentNum是无法动态去修改的,因为如果动态去给数据分页,会导致分页错乱,看了你的代码意思就是说如果total没有一页数据量,你就将segmentNum=total,其实没必要啊,我认为这个操作是个无效操作,也起不到提升性能的作用,其次autoScrollTop如果不设置的话,组件是会根据list的改变去将页面置顶的,设置了的话,你就要自己去控制了
是的,后面代码我改动了一下,autoScrollTop为false,并且在 scrollViewProps中的scrollTop给一个0-1的随机数进行置顶效果,但是在服务端分页的时候,分页到第二页的时候,后续进行筛选功能操作,我看到您开发的组件实例内部的state就出现了意外的数值了
服务端分页的时候注意不要修改list的引用,而是向list去concat数据,本来就是要出现高度的哈,原理就是用高度占位的,可以有时间再看看源码哈哈
所以意思就是不在需要去setState我的list追加数据,而是直接concat,然后直接通过一个this.forceUpdate强制刷新一下就好了是吗
说错了,是要更换一个新的引用,可以看下src/pages/virtual-list-demo/index.tsx的代码,这是demo
有一个问题,当数据源从多变成少的时候,scrollView的滚动高度,不会随着改变,并且上滑的时候 会疯狂的闪屏 const isLowerThreshold = total >= query.rowsPerPage;
<TaroVirtualList list={list} listId='legworkId' segmentNum={isLowerThreshold ? query.rowsPerPage : total} autoScrollTop={autoScrollTop} listType='multi' pageNum={query.pageNo} className={styles.indexListContainer} scrollViewProps={{ onScrollToLower: onPageScrollToLower, }} onRender={(item, index) => { return <ListItem data={item} index={index} />; }}
isLowerThreshold 想着如果获取到的数据只有个位数的话,每次展示的条数也应当进行调整,当时发现没什么用 autoScrollTop也是为了点击筛选的时候自动滚动到顶部设置的 大佬有空帮忙看看这个问题
segmentNum是无法动态去修改的,因为如果动态去给数据分页,会导致分页错乱,看了你的代码意思就是说如果total没有一页数据量,你就将segmentNum=total,其实没必要啊,我认为这个操作是个无效操作,也起不到提升性能的作用,其次autoScrollTop如果不设置的话,组件是会根据list的改变去将页面置顶的,设置了的话,你就要自己去控制了
是的,后面代码我改动了一下,autoScrollTop为false,并且在 scrollViewProps中的scrollTop给一个0-1的随机数进行置顶效果,但是在服务端分页的时候,分页到第二页的时候,后续进行筛选功能操作,我看到您开发的组件实例内部的state就出现了意外的数值了
服务端分页的时候注意不要修改list的引用,而是向list去concat数据,本来就是要出现高度的哈,原理就是用高度占位的,可以有时间再看看源码哈哈
所以意思就是不在需要去setState我的list追加数据,而是直接concat,然后直接通过一个this.forceUpdate强制刷新一下就好了是吗
说错了,是要更换一个新的引用,可以看下src/pages/virtual-list-demo/index.tsx的代码,这是demo
src/pages/virtual-list-demo/index.tsx
好嘞谢谢大佬
有一个问题,当数据源从多变成少的时候,scrollView的滚动高度,不会随着改变,并且上滑的时候 会疯狂的闪屏
const isLowerThreshold = total >= query.rowsPerPage;
isLowerThreshold 想着如果获取到的数据只有个位数的话,每次展示的条数也应当进行调整,当时发现没什么用 autoScrollTop也是为了点击筛选的时候自动滚动到顶部设置的
大佬有空帮忙看看这个问题