From b53e028fc1af0c1473898153dd6c5442d64efb22 Mon Sep 17 00:00:00 2001 From: yangxiaolu3 Date: Wed, 27 Jan 2021 20:12:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20infiniteloading=20=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/packages/infiniteloading/demo.vue | 131 ++++++++++++++++- src/packages/infiniteloading/doc.md | 170 ++++++++++++++++++---- src/packages/infiniteloading/index.scss | 10 ++ src/packages/infiniteloading/index.vue | 179 ++++++++++++++++++++++-- 4 files changed, 444 insertions(+), 46 deletions(-) diff --git a/src/packages/infiniteloading/demo.vue b/src/packages/infiniteloading/demo.vue index 9aa18f8c4..62349c4de 100644 --- a/src/packages/infiniteloading/demo.vue +++ b/src/packages/infiniteloading/demo.vue @@ -2,24 +2,147 @@

基础用法

- - +
    + +
  • {{ item }}
  • +
    +
+
+ +

自定义加载文案

+ +
    + +
  • {{ item }}
  • + + + +
    +
diff --git a/src/packages/infiniteloading/doc.md b/src/packages/infiniteloading/doc.md index f55494dd9..7c0a1af4e 100644 --- a/src/packages/infiniteloading/doc.md +++ b/src/packages/infiniteloading/doc.md @@ -1,34 +1,146 @@ # infiniteloading组件 - ### 介绍 - - 基于 xxxxxxx - - ### 安装 - - - - ## 代码演示 - - ### 基础用法1 - +### 介绍 +列表滚动到底部自动加载更多数据。 + +### 安装 + +```javascript + import { createApp } from 'vue'; + import { InfiniteLoading } from '@nutui/nutui'; + + const app = createApp(); + app.use(InfiniteLoading); +``` + +## 代码演示 - ## API - - ### Props - - | 参数 | 说明 | 类型 | 默认值 | - |--------------|----------------------------------|--------|------------------| - | name | 图标名称或图片链接 | String | - | - | color | 图标颜色 | String | - | - | size | 图标大小,如 '20px' '2em' '2rem' | String | - | - | class-prefix | 类名前缀,用于使用自定义图标 | String | 'nutui-iconfont' | - | tag | HTML 标签 | String | 'i' | - - ### Events - - | 事件名 | 说明 | 回调参数 | - |--------|----------------|--------------| - | click | 点击图标时触发 | event: Event | +### 基础用法 + +```html + +``` +```javascript +setup() { + const isLoading = ref(false); + const hasMore = ref(true); + const data = reactive({ + defultList: [] + }); + const scrollChange = (dis) => {}; + const loadMore = () => { + isLoading.value = true; + setTimeout(() => { + const curLen = data.defultList.length; + for (let i = curLen; i < curLen + 10; i++) { + data.defultList.push(`${i} -- 塑像本来就在石头里,我只是把不要的部分去掉`); + } + isLoading.value = false; + if (data.defultList.length > 30) hasMore.value = false; + }, 500); + }; + const init = () => { + for (let i = 0; i < 10; i++) { + data.defultList.push(`${i} -- 塑像本来就在石头里,我只是把不要的部分去掉`); + } + } + onMounted(() => { + init() + }); + return { scrollChange, loadMore, isLoading, hasMore, ...toRefs(data) }; +} +``` + +### 自定义加载文案 + +```html + +``` +```javascript +setup() { + const customIsLoading = ref(false); + const customHasMore = ref(true); + const data = reactive({ + customList: [''] + }); + const customLoadMore = () => { + customIsLoading.value = true; + setTimeout(() => { + const curLen = data.customList.length; + for (let i = curLen; i < curLen + 10; i++) { + data.customList.push(`${i} -- 塑像本来就在石头里,我只是把不要的部分去掉`); + } + customIsLoading.value = false; + if (data.customList.length > 30) customHasMore.value = false; + }, 500); + }; + const init = () => { + for (let i = 0; i < 10; i++) { + data.customList.push(`${i} -- 塑像本来就在石头里,我只是把不要的部分去掉`); + } + } + onMounted(() => { + init() + }); + return { customIsLoading, customHasMore, customLoadMore,...toRefs(data) }; +} +``` + +## API + +### Props + +| 参数 | 说明 | 类型 | 默认值 | +|--------------|----------------------------------|--------|------------------| +| hasMore | 是否还有更多数据 | Boolean | true | +| isLoading | 是否加载中 | Boolean | false | +| threshold | 距离底部多远加载 | Number | 200 | +| useWindow | 将滚动侦听器添加到 window 否则侦听组件的父节点 | Boolean | true | +| useCapture | 是否使用捕获模式 true 捕获 false 冒泡 | Boolean | false | +| containerId | 在 useWindow 属性为 false 的时候,自定义设置节点ID | String | '' | +| unloadMoreTxt | “没有更多数”据展示文案 | String | '哎呀,这里是底部了啦' | + +### Slot + +| name | 说明 | +|--------|----------------| +| loading | 自定义“加载中”的展示形式 | +| unloadMore | 自定义“没有更多数据”的展示形式 | + +### Events + +| 事件名 | 说明 | 回调参数 | +|--------|----------------|--------------| +| loadMore | 继续加载的回调函数 | - | +| scrollChange | 实时监听滚动高度 | 滚动高度 | \ No newline at end of file diff --git a/src/packages/infiniteloading/index.scss b/src/packages/infiniteloading/index.scss index f5c7b1005..9743d20a9 100644 --- a/src/packages/infiniteloading/index.scss +++ b/src/packages/infiniteloading/index.scss @@ -1,2 +1,12 @@ .nut-infiniteloading { + display: block; + width: 100%; + .nut-infinite-bottom { + display: block; + width: 100%; + padding-top: 16px; + font-size: 12px; + color: rgba(200, 200, 200, 1); + text-align: center; + } } diff --git a/src/packages/infiniteloading/index.vue b/src/packages/infiniteloading/index.vue index 26bc6cda1..105273155 100644 --- a/src/packages/infiniteloading/index.vue +++ b/src/packages/infiniteloading/index.vue @@ -1,38 +1,191 @@ -- GitLab