# InfiniteLoading 滚动加载 ### 介绍 列表滚动到底部自动加载更多数据。 ### 安装 ```javascript import { createApp } from 'vue'; import { InfiniteLoading } from '@nutui/nutui'; const app = createApp(); app.use(InfiniteLoading); ``` ## 代码演示 ### 基础用法 ```html ``` ```javascript setup() { const hasMore = ref(true); const data = reactive({ defultList: [] }); const loadMore = done => { setTimeout(() => { const curLen = data.defultList.length; for (let i = curLen; i < curLen + 10; i++) { data.defultList.push(`${i}`); } if (data.defultList.length > 30) hasMore.value = false; done() }, 500); }; const init = () => { for (let i = 0; i < 10; i++) { data.defultList.push(`${i}`); } } onMounted(() => { init() }); return { loadMore, hasMore, ...toRefs(data) }; } ``` ### 下拉刷新 ```html ``` ```javascript setup() { const refreshHasMore = ref(true); const data = reactive({ refreshList: [] }); const refreshLoadMore = done => { setTimeout(() => { const curLen = data.refreshList.length; for (let i = curLen; i < curLen + 10; i++) { data.refreshList.push( `${i}` ); } if (data.refreshList.length > 30) refreshHasMore.value = false; done() }, 500); }; const refresh = (done) => { setTimeout(()=>{ Toast.success('刷新成功'); done() },1000) } const init = () => { for (let i = 0; i < 10; i++) { data.refreshList.push(`${i}`); } } onMounted(() => { init() }); return { refreshLoadMore, refreshHasMore, refresh, ...toRefs(data) }; } ``` ### 自定义加载文案 ```html ``` ```javascript setup() { const customHasMore = ref(true); const data = reactive({ customList: [''] }); const customLoadMore = done => { setTimeout(() => { const curLen = data.customList.length; for (let i = curLen; i < curLen + 10; i++) { data.customList.push(`${i}`); } if (data.customList.length > 30) customHasMore.value = false; done() }, 500); }; const init = () => { for (let i = 0; i < 10; i++) { data.customList.push(`${i}`); } } onMounted(() => { init() }); return { customHasMore, customLoadMore,...toRefs(data) }; } ``` ## API ### Props | 参数 | 说明 | 类型 | 默认值 | |--------------|----------------------------------|--------|------------------| | has-more | 是否还有更多数据 | Boolean | `true` | | threshold | 距离底部多远加载 | Number | `200` | | use-window | 将滚动侦听器添加到 window 否则侦听组件的父节点 | Boolean | `true` | | use-capture | 是否使用捕获模式 true 捕获 false 冒泡 | Boolean | `false` | | container-id | 在 useWindow 属性为 false 的时候,自定义设置节点ID | String | `''` | | load-more-txt | “没有更多数”据展示文案 | String | `'哎呀,这里是底部了啦'` | | is-open-refresh | 是否开启下拉刷新 | Boolean | `false` | | pull-icon | 下拉刷新[图标名称](#/icon) | String | | | pull-txt | 下拉刷新提示文案 | String | `松手刷新` | | load-icon | 上拉加载[图标名称](#/icon) | Boolean | | | load-txt | 上拉加载提示文案 | String | `加载中...` | ### Events | 事件名 | 说明 | 回调参数 | |--------|----------------|--------------| | load-more | 继续加载的回调函数 | done 函数,用于关闭加载中状态 | | scroll-change | 实时监听滚动高度 | 滚动高度 | | refresh | 下拉刷新事件回调 | done 函数,用于关闭加载中状态 |