šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Sign inDemoInstall
Socket

yi-infinite-loading-vue3

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

yi-infinite-loading-vue3

A Infinite Loading Component for Vue 3

1.3.1
latest
Source
npm
Version published
Weekly downloads
32
-8.57%
Maintainers
1
Weekly downloads
Ā 
Created
Source

infinite-loading-vue3

An infinite loading component for Vue 3.0 apps

Installation

npm install yi-infinite-loading-vue3

demo

Usage

global use

import { createApp } from 'vue'
import App from './App.vue'
import YiInfiniteLoading from 'yi-infinite-loading-vue3'

const app = createApp(App)
// app.component("YiInfiniteLoading", YiInfiniteLoading)
// or 
app.use(YiInfiniteLoading)
app.mount('#app')

introduced separately

import YiInfiniteLoading from "yi-infinite-loading-vue3"

<script>
  export default {
    components: {
      YiInfiniteLoading
    }
  }
</script>

<template>
  <div>
    <yi-infinite-loading
      :loading="isLoading"
      :finished="finished"
      :offset="100"
      @loadMore="loadMore">
    </yi-infinite-loading>
  </div>
</template>

support typescript

src/components.d.ts

import YiInfiniteLoading from "yi-infinite-loading-vue3"

/**
 * @desc ts Declare global registration components
 */
declare module "@vue/runtime-core" {
  export interface GlobalComponents {
    YiInfiniteLoading: typeof YiInfiniteLoading
  }
}

Props

propsdescriptiontypedefault
loadMorecallbackfunctionfunction
loadingis loadingboobleanfalse
finishedis loadedbooleanfalse
offsetdistance from bottomstring | number0
hideLoadingWhether to hide the default loading statusbooleanfalse

Example

Let's see the yi-infinite-loading-vue3 package in action.


<template>
  <div class="infinite-scroll-box">
    <ul class="infinite-scroll-list">
      <li class="infinite-scroll-item" v-for="item in list" :key="item">
        {{ item }}
      </li>
    </ul>
    <YiInfiniteLoading
      :loading="isLoading"
      :finished="finished"
      offset="100%"
      :hideLoading="true"
      @loadMore="loadMore"
    >
      <span class="tips" v-if="isLoading">loading...</span>
      <span class="tips" v-if="finished">end...</span>
    </YiInfiniteLoading>
  </div>
  <div class="clear" >
    <button @click="clear" >clear</button>
    <button v-if="!isLoading" @click="loadMore" >load more</button>
  </div>
</template>
<script setup lang="ts">
import { reactive, ref } from 'vue'

const list = reactive<number[]>([])
const isLoading = ref(false)
const finished = ref(false)

const loadMore = () => {
  if (isLoading.value) {
    return
  }
  isLoading.value = true
  setTimeout(() => {
    const len = list.length
    for (let i = 1; i <= 10; i++) {
      list.push(len + i)
    }
    isLoading.value = false
    if (list.length > 100) {
      finished.value = true
    }
  }, 1000)
}

const clear = () => {
  list.splice(0, list.length)
  finished.value = false
}
</script>

<style scoped>
.infinite-scroll-box{
  width: 100%;
  height: 50vh;
  overflow-y: auto;
  border: 1px solid #000;
}
.infinite-scroll-list{
  width: 100%;
  padding: 0px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.infinite-scroll-item{
  margin-bottom: 10px;
  background-color: red;
  color: #fff;
  width: 100%;
  height: 100px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 20px;
}
button{
  margin-bottom: 30px;
}
.tips{
  display: block;
  text-align: center;
}
</style>

</style>


Keywords

vue3

FAQs

Package last updated on 22 Dec 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts