yarn add vue-infinite-loading
下記の通り型を定義する。
declare module 'vue-infinite-loading' {
import Vue from 'vue'
export default class InfiniteLoading extends Vue {
spinner: string;
direction: string;
distance: number;
onInfinite: Function;
forceUseInfiniteWrapper: boolean;
}
export interface StateChanger {
complete(): void;
loaded(): void;
reset(): void;
}
}
後になって気付いたんですが、開発元の issue を見ると載っていたようです。
[TypeScript definition?]8https://github.com/PeachScript/vue-infinite-loading/issues/139#issue-307231773)
デフォルトのデータを読み込み終えると「読み込み終わった」ことを表す。
もちろんカスタム化も可能、適宜コンポーネントを挿入していただければと良さそうです。
<span>読み込み終わりました</span>
infiniteHandler()
を使って 10 秒後に表示されるようした。
infiniteHandler($state: any) {
setTimeout(() => {
if (this.count < this.posts.length) {
this.count += 9
$state.loaded()
} else {
$state.complete()
}
}, 1000)
}
これで無限スクロールが実現できた。