# List ### Intro A list component to show items and control loading status. ### Install ```js import { createApp } from 'vue'; import { List } from 'vant'; const app = createApp(); app.use(List); ``` ## Usage ### Basic Usage ```html ``` ```js import { reactive } from 'vue'; export default { setup() { const state = reactive({ list: [], loading: false, finished: false, }); const onLoad = () => { setTimeout(() => { for (let i = 0; i < 10; i++) { state.list.push(state.list.length + 1); } state.loading = false; if (state.list.length >= 40) { state.finished = true; } }, 1000); }; return { state, onLoad, }; }, }; ``` ### Error Info ```html ``` ```js import { reactive } from 'vue'; export default { setup() { const state = reactive({ list: [], error: false, loading: false, }); const onLoad = () => { fetchSomeThing().catch(() => { state.error = true; }); }; return { state, onLoad, }; }, }; ``` ### PullRefresh ```html ``` ```js import { reactive } from 'vue'; export default { setup() { const state = reactive({ list: [], loading: false, finished: false, refreshing: false, }); const onLoad = () => { setTimeout(() => { if (state.refreshing) { state.list = []; state.refreshing = false; } for (let i = 0; i < 10; i++) { state.list.push(state.list.length + 1); } state.loading = false; if (state.list.length >= 40) { state.finished = true; } }, 1000); }; const onRefresh = () => { state.finished = false; state.loading = true; onLoad(); }; return { state, onLoad, onRefresh, }; }, }; ``` ## API ### Props | Attribute | Description | Type | Default | | --- | --- | --- | --- | | v-model:loading | Whether to show loading info,the `load` event will not be Emitted when loading | _boolean_ | `false` | | finished | Whether loading is finished,the `load` event will not be Emitted when finished | _boolean_ | `false` | | error | Whether loading is error,the `load` event will be Emitted only when error text clicked, the `sync` modifier is needed | _boolean_ | `false` | | offset | The load event will be Emitted when the distance between the scrollbar and the bottom is less than offset | _number \| string_ | `300` | | loading-text | Loading text | _string_ | `Loading...` | | finished-text | Finished text | _string_ | - | | error-text | Error loaded text | _string_ | - | | immediate-check | Whether to check loading position immediately after mounted | _boolean_ | `true` | | direction | Scroll direction,can be set to `up` | _string_ | `down` | ### Events | Event | Description | Arguments | | --- | --- | --- | | load | Emitted when the distance between the scrollbar and the bottom is less than offset | - | ### Methods Use [ref](https://v3.vuejs.org/guide/component-template-refs.html) to get List instance and call instance methods. | Name | Description | Attribute | Return value | | ----- | --------------------- | --------- | ------------ | | check | Check scroll position | - | - | ### Slots | Name | Description | | -------- | -------------------- | | default | List content | | loading | Custom loading tips | | finished | Custom finished tips | | error | Custom error tips | ### Less Variables How to use: [Custom Theme](#/en-US/theme). | Name | Default Value | Description | | ----------------------- | --------------- | ----------- | | @list-icon-margin-right | `5px` | - | | @list-text-color | `@gray-6` | - | | @list-text-font-size | `@font-size-md` | - | | @list-text-line-height | `50px` | - |