Closed zjjjjjjjjjjd closed 1 year ago
除非触发下拉刷新才行
我试了一下demo是可以展示的啊,你是什么情况下不展示的,数据为空的时候有去setState吗
我试出来这样有问题:
import { TaroVirtualList } from 'taro-virtual-list'
export default function Demo(): JSX.Element {
const [loading,setLoading] = useState(false)
// 渲染列表Item
const renderFunc = (item, index, pageIndex) => {
return (
<View className="el">{`当前是第${item}个元素,是第${pageIndex}屏的数据`}</View>
)
}
const onPageScrollToLower = () => {
// 执行分页数据请求
}
useEffect(() => {
// 控制loading
},[])
return (
<View>
{loading ? 'laoding' : <TaroVirtualList
autoScrollTop={false}
listType="multi"
list={list}
pageNum={页码}
segmentNum={每页的数据量}
onRenderBottom={() => <View>底部</View>}
onRender={renderFunc}
scrollViewProps={{
onScrollToLower: onPageScrollToLower,
lowerThreshold: 50,
style: {
"height": '100vh',
},
}}
/>}
</View>
)
}
伪代码
我试出来这样有问题:
- 设置一个loading
- 强刷请求时把loading变为true
- 此时显示loading的view,隐藏list
- 请求结束后把loading变为false
- 这个时候list的底部就不见了
onRenderLoad,用这个方法去渲染loading,或者不要将组件直接销毁,可以将组件用样式隐藏
我试出来这样有问题:
- 设置一个loading
- 强刷请求时把loading变为true
- 此时显示loading的view,隐藏list
- 请求结束后把loading变为false
- 这个时候list的底部就不见了
onRenderLoad,用这个方法去渲染loading,或者不要将组件直接销毁,可以将组件用样式隐藏
onRenderBottom 有这么一个问题,数据超过两页的时候,我使用了onRefresherRefresh 准备重置整个列表,这个时候onRenderBottom就没了
onRefresh是什么方法,没有这个方法啊,重置列表去改变list就好了
没有
看了代码 isComplete 这个值在list有变化,且pageNum从2变到1的时候被置为false了 没明白为啥要用这个isComplete去控制底部渲染呢?QAQ
onRefresh是什么方法,没有这个方法啊,重置列表去改变list就好了
onRefresherRefresh是scrollview提供的最顶部的下拉操作,理解为把页面整个拉下来一部分,一般是用于重置整个列表
onRefresh是什么方法,没有这个方法啊,重置列表去改变list就好了
可能是listType === "single"的时候有用,因为我们整个业务没有使用到全量加载,大胆认为“multi”模式可以忽略isComplete控制了
除非触发下拉刷新才行