### Install Vue3 Infinite Loading via NPM Source: https://vue3-infinite-loading.vercel.app/guide/README Installs the Vue3 Infinite Loading package using NPM. This is the recommended method for larger applications. ```bash npm install @codog/vue3-infinite-loading ``` -------------------------------- ### Import Vue3 Infinite Loading as a Component Source: https://vue3-infinite-loading.vercel.app/guide/README Demonstrates how to import and use the Vue3 Infinite Loading component within a Vue template and script setup. ```vue ``` -------------------------------- ### Register Vue3 Infinite Loading as a Plugin Source: https://vue3-infinite-loading.vercel.app/guide/README Shows how to register the Infinite Loading component as a global plugin using Vue's `use` API. This allows for default option configuration. ```javascript // main.js or index.js import InfiniteLoading from '@codog/vue3-infinite-loading' Vue.use(InfiniteLoading, { /* options */ }); ``` -------------------------------- ### Vue 3 Template for Infinite Loading Source: https://vue3-infinite-loading.vercel.app/guide/start-with-hn This HTML template sets up the structure for infinite scrolling in a Vue 3 application. It includes a header, a loop to display items, and the InfiniteLoading component which listens for the 'infinite' event. ```html
``` -------------------------------- ### Vue 3 Infinite Loading with Hacker News API Source: https://vue3-infinite-loading.vercel.app/guide/start-with-hn This snippet demonstrates fetching data from the Hacker News API using Axios in a Vue 3 application. It implements infinite scrolling by appending new data as the user scrolls down. The `infiniteHandler` function is responsible for making API requests and updating the component's state. ```vue ``` -------------------------------- ### Top Direction Scroll Setup in Vue Template Source: https://vue3-infinite-loading.vercel.app/guide/top-dir-scroll This snippet shows how to integrate the infinite-loading component at the top of a list for top-direction scrolling. It sets the `direction` attribute to 'top' and listens for the `@infinite` event to trigger data loading. ```html
``` -------------------------------- ### Vue 3 Infinite Loading Handler Logic (JavaScript) Source: https://vue3-infinite-loading.vercel.app/guide/start-with-hn This JavaScript code provides the core logic for the infinite scrolling handler in Vue 3. It uses axios to fetch data from the Hacker News API, updates the component's data with new items, and signals the InfiniteLoading component when data is loaded or when all data has been fetched. ```javascript import axios from 'axios'; const api = '//hn.algolia.com/api/v1/search_by_date?tags=story'; export default { data() { return { page: 1, list: [], }; }, methods: { infiniteHandler($state) { axios.get(api, { params: { page: this.page, }, }).then(({ data }) => { if (data.hits.length) { this.page += 1; this.list.push(...data.hits); $state.loaded(); } else { $state.complete(); } }); }, }, }; ``` -------------------------------- ### Vue 3 Infinite Loading Component with Spinner and State Management Source: https://vue3-infinite-loading.vercel.app/guide/configure-load-msg This Vue 3 component utilizes the `infinite-loading` component to showcase various spinner types and manage loading states. It includes template code for UI elements and script setup for logic, using Vue's reactivity system and refs. The `infiniteHandler` function simulates data fetching and state updates, while `changeType` and `changeSpinner` functions control the component's behavior and appearance. ```vue ``` -------------------------------- ### Configure Default Props and System Settings for Vue3 Infinite Loading Source: https://vue3-infinite-loading.vercel.app/guide/configure-plugin-opts Configure default spinner and system settings like throttleLimit for all InfiniteLoading components. This uses the Vue.use method with an options object containing 'props' and 'system' fields. ```javascript import Vue from 'vue'; import InfiniteLoading from '@codog/vue3-infinite-loading'; Vue.use(InfiniteLoading, { props: { spinner: 'default', /* other props need to configure */ }, system: { throttleLimit: 50, /* other settings need to configure */ }, }); ``` -------------------------------- ### Data Fetching for Top Direction Scroll (JavaScript) Source: https://vue3-infinite-loading.vercel.app/guide/top-dir-scroll This JavaScript code demonstrates fetching data for top-direction infinite scrolling. It uses Axios to make API requests, reverses the fetched data, and prepends it to the list using `unshift`. It manages pagination and signals the loading state. ```javascript import axios from 'axios'; const api = '//hn.algolia.com/api/v1/search_by_date?tags=story'; export default { data() { return { page: 1, list: [], }; }, methods: { infiniteHandler($state) { axios.get(api, { params: { page: this.page, }, }).then(({ data }) => { if (data.hits.length) { this.page += 1; this.list.unshift(...data.hits.reverse()); $state.loaded(); } else { $state.complete(); } }); }, }, }; ``` -------------------------------- ### Configure spinner via prop Source: https://vue3-infinite-loading.vercel.app/guide/configure-load-msg Set the spinner type using the 'spinner' prop. Only built-in spinner types are supported. ```html ``` -------------------------------- ### Global slot configuration via plugin API Source: https://vue3-infinite-loading.vercel.app/guide/configure-load-msg Configure slots globally using the plugin API. Pass strings for default messages, components for custom content, or objects to control styles and hiding. ```js import Vue from 'vue'; import InfiniteLoading from '@codog/vue3-infinite-loading'; import InfiniteError from 'path/to/your/components/InfiniteError'; Vue.use(InfiniteLoading, { slots: { // keep default styles noResults: 'No results message', // remove default styles noMore: InfiniteError, // hide slot error: { render: h => h('div'), }, }, }); ``` -------------------------------- ### Manage slot styles and visibility Source: https://vue3-infinite-loading.vercel.app/guide/configure-load-msg Control default styles and visibility of slots. Wrap content in a template tag to retain default styles, use an empty non-template element to hide a slot, or use a non-template element to remove default styles. ```html ``` ```html ``` ```html
No more message
``` -------------------------------- ### Vue 3 Infinite Loading for Hacker News Source: https://vue3-infinite-loading.vercel.app/guide/use-with-filter-or-tabs This snippet displays a Hacker News feed with infinite scrolling. It fetches data from the Algolia Hacker News API, allowing users to switch between different news types. The `vue3-infinite-loading` component handles the loading of more items as the user scrolls down. It depends on Vue 3, Axios, and the `vue3-infinite-loading` library. ```vue ``` -------------------------------- ### Vue 3 Infinite Loading Component Source: https://vue3-infinite-loading.vercel.app/guide/top-dir-scroll This Vue 3 component utilizes the `infinite-loading` library to fetch and display Hacker News articles. It makes API calls using Axios, manages the list of articles with Vue's ref, and implements an infinite scroll handler. The component also includes styling for the header and news items. ```html ``` -------------------------------- ### Element UI Table Integration with Infinite Loading (Vue) Source: https://vue3-infinite-loading.vercel.app/guide/use-with-el-table Demonstrates integrating the InfiniteLoading component within an Element UI table's 'append' slot. It highlights the need to specify 'forceUseInfiniteWrapper' with the correct CSS selector for the scrollable container, crucial for dynamic scrollbars. ```html
``` ```vue ``` -------------------------------- ### Vue 3 Infinite Loading with Filter/Tabs (HTML) Source: https://vue3-infinite-loading.vercel.app/guide/use-with-filter-or-tabs This HTML template demonstrates how to integrate an infinite loading component with a select element for filtering. It uses Vue's `v-model` and `@change` directives to manage the selected news type and triggers the infinite loading handler. ```html
``` -------------------------------- ### Vue 3 Infinite Loading with Filter/Tabs (JavaScript) Source: https://vue3-infinite-loading.vercel.app/guide/use-with-filter-or-tabs This JavaScript code provides the logic for the Vue 3 infinite loading component. It uses Axios to fetch data from an API, manages component state like page number and list items, and includes a method to reset the loading process when the news type changes. ```javascript import axios from 'axios'; const api = '//hn.algolia.com/api/v1/search_by_date'; export default { data() { return { page: 1, list: [], newsType: 'story', infiniteId: +new Date(), }; }, methods: { infiniteHandler($state) { axios.get(api, { params: { page: this.page, tags: this.newsType, }, }).then(({ data }) => { if (data.hits.length) { this.page += 1; this.list.push(...data.hits); $state.loaded(); } else { $state.complete(); } }); }, changeType() { this.page = 1; this.list = []; this.infiniteId += 1; }, }, }; ``` -------------------------------- ### Custom error component with retry functionality Source: https://vue3-infinite-loading.vercel.app/guide/configure-load-msg Implement a custom error component that includes a retry button. The 'trigger' method can be accessed via `$attrs.trigger` or defined as a prop. ```html
Error message, click here to retry
``` ```js // your own error component export default { /* ... */ props: { trigger: Function, }, /* ... */ }; ``` -------------------------------- ### Configure Default Slots for Vue3 Infinite Loading Source: https://vue3-infinite-loading.vercel.app/guide/configure-plugin-opts Configure default slot values, such as 'noMore' messages or error components, for InfiniteLoading components. This involves passing an options object with the 'slots' field to Vue.use. ```javascript import Vue from 'vue'; import InfiniteLoading from '@codog/vue3-infinite-loading'; import InfiniteError from 'path/to/your/components/InfiniteError'; Vue.use(InfiniteLoading, { slots: { noMore: 'No more message', // you can pass a string value error: InfiniteError, // you also can pass a Vue component as a slot }, }); ``` -------------------------------- ### Configure slots via v-slot directive Source: https://vue3-infinite-loading.vercel.app/guide/configure-load-msg Customize spinner, no-more, no-results, and error messages using Vue's v-slot directive. The error slot can receive a 'trigger' prop for retry functionality. ```html