Vue 드롭다운 스크롤 로드 데이터의 예
1단계: 설치
npm install vue-infinite-loading --save
2단계: 참조
import InfiniteLoading from 'vue-infinite-loading';
export default {
components: { InfiniteLoading }
}
3단계: 사용
1. 기본 사용법
<template>
<div> <p v-for="item in list"> <span v-text="item"></span> </p> <!--infinite-loading , !--> <infinite-loading @infinite="infiniteHandler"></infinite-loading> </div></template><script> import InfiniteLoading from 'vue-infinite-loading';
export default {
data() {
return {
list: []
};
},
methods: {
infiniteHandler($state) {
// 1
setTimeout(() => {
let temp = [];
for (let i = this.list.length + 1; i <= this.list.length + 20; i++) {
temp.push(i);
}
this.list = this.list.concat(temp);
$state.loaded();
}, 1000);
},
},
components: { InfiniteLoading }
}</script>
2. 페이지 나누기
<template>
<div>
<ul>
<li class="hacker-news-item" v-for="(item, key) in list"></li>
</ul>
<infinite-loading @infinite="infiniteHandler">
<span slot="no-more">No more Data</span>
</infinite-loading>
</div>
</template>
<script>
import InfiniteLoading from 'vue-infinite-loading';
import axios from 'axios';
export default {
data() {
return {
list: []
};
},
methods: {
infiniteHandler($state) {
let api="http://xxx.com/xxx";
// api
axios.get(api, {
params: {
// (10 )
page: this.list.length / 10 + 1,
},
}).then((response) => {
if (response.data.length) {
// response.data
this.list = this.list.concat(response.data);
$state.loaded();
if (this.list.length / 10 === 10) {
// 10 ,
$state.complete();
}
} else {
$state.complete();
}
});
}
},
components: { InfiniteLoading }
};
</script>
설명: $state: 이 구성 요소는 이벤트 매개 변수 $state를 이벤트 프로세서에 전달하여 불러오는 상태를 변경합니다. $state 매개 변수는loaded 방법,complete 방법,reset 방법 세 가지 방법을 포함합니다.
<template>
<div class="hacker-news-list">
<div class="hacker-news-header">
<!-- -->
<select v-model="tag" @change="changeFilter()">
<option value="story">Story</option>
<option value="history">History</option>
</select>
<!-- -->
<button @click="changeFilter()"> </button>
</div>
<ul>
<li class="hacker-news-item" v-for="(item, key) in list"></li>
</ul>
<!-- ref="infiniteLoading"-->
<infinite-loading @infinite="infiniteHandler" ref="infiniteLoading">
<span slot="no-more">No more data</span>
</infinite-loading>
</div>
</template>
<script>
import InfiniteLoading from 'vue-infinite-loading';
import axios from 'axios';
export default {
data() {
return {
list: [],
tag: 'story',
};
},
methods: {
infiniteHandler($state) {
const api="http://xxx.com/xxx";
// api
axios.get(api, {
params: {
//
tags: this.tag,
page: this.list.length / 10 + 1,
},
}).then(({ data }) => {
if (data.result.length) {
this.list = this.list.concat(data.result);
$state.loaded();
if (this.list.length / 20 === 10) {
state.complete();
}
} else {
$state.complete();
}
});
},
//
changeFilter() {
this.list = [];
this.$nextTick(() => {
this.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');
});
},
},
components: { InfiniteLoading }
}
</script>
공식 링크:https://peachscript.github.io/vue-infinite-loading/ GitHub 링크:https://github.com/PeachScript/vue-infinite-loading
이상은 바로 Vue가 아래로 스크롤하여 데이터를 불러오는 예시를 실현하는 상세한 내용입니다. 더 많은 Vue 아래로 스크롤하여 데이터를 불러오는 것에 관한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue Render 함수로 DOM 노드 코드 인스턴스 만들기render에서createElement 함수를 사용하여 DOM 노드를 만드는 것은 직관적이지 않지만 일부 독립 구성 요소의 디자인에서 특수한 수요를 충족시킬 수 있습니다.간단한 렌더링 예는 다음과 같습니다. 또한 v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.