# vuejs-loadmore
[](https://www.npmjs.com/package/vuejs-loadmore) [](https://github.com/staticdeng/vuejs-loadmore/actions)
[](https://nodei.co/npm/vuejs-loadmore/)
A pull-down refresh and pull-up loadmore scroll component for Vue.js.
Easy to use by providing simple api. Unlike other component libraries, it uses the browser itself to scroll instead of js, so it has a smaller code size but does not lose the user experience.
**English** | [中文](./README.md)
## Preview
[Online demo](https://staticdeng.github.io/vuejs-loadmore/)
You can also scan the following QR code to access the demo:
## Installation
#### Install the npm package
```bash
# npm
npm install vuejs-loadmore --save
```
#### Import
```js
import Vue from 'vue';
import VueLoadmore from 'vuejs-loadmore';
Vue.use(VueLoadmore);
```
## Internationalization support
Support Chinese zh-CN and English en-US, the default is zh-CN.
```js
import VueLoadmore from 'vuejs-loadmore';
Vue.use(VueLoadmore, {
lang: 'en-US'
})
```
You can also use `locale.use()` to specify the language.
```js
import VueLoadmore, { locale } from 'vuejs-loadmore';
Vue.use(VueLoadmore);
locale.use('en-US');
```
## Usage
### Basic Usage
```html
```
The `on-refresh` and `on-loadmore` will be Emitted when pull refresh or scroll to the bottom, you should need to execute the callback function `done()` after processing the data request.
If you don't need refresh, only not to bind `on-refresh`.
When the data request is finished, the data of `finished` you can changed to true, then will show `finished-text`.
```js
export default {
data() {
return {
list: [],
page: 1,
pageSize: 10,
finished: false
};
},
mounted() {
this.fetch();
},
methods: {
onRefresh(done) {
this.list = [];
this.page = 1;
this.finished = false;
this.fetch();
done();
},
onLoad(done) {
if (this.page <= 10) {
this.fetch();
} else {
// all data loaded
this.finished = true;
}
done();
},
fetch() {
for (let i = 0; i < this.pageSize; i++) {
this.list.push(this.list.length + 1);
}
this.page++;
}
},
}
```
### Load Error Info
```html
```
```js
export default {
data() {
return {
list: [],
finished: false,
error: false,
};
},
methods: {
onLoad() {
fetchSomeThing().catch(() => {
this.error = true;
});
},
},
};
```
## API
### Props
| Attribute | Description | Type | Default |
| --- | --- | --- | --- |
| on-refresh | Will be Emitted when pull refresh | _function_ | - |
| pulling-text | The Text when pulling in refresh | _string_ | `Pull down to refresh` |
| loosing-text | The Text when loosing in refresh | _string_ | `Loosing to refresh` |
| refresh-text | The Text when loading in refresh | _string_ | `Refreshing` |
| success-text | The Text when loading success in refresh | _string_ | `Refresh success` |
| show-success-text | Whether to show `success-text` | _boolean_ | `true` |
| pull-distance | The distance to trigger the refresh status | _number \| string_ | `50` |
| head-height | The height of the area of the refresh shows | _number \| string_ | `50` |
| animation-duration | Animation duration of the refresh | _number \| string_ | `200` |
| on-loadmore | Will be Emitted when scroll to the bottom | _function_ | - |
| immediate-check | Whether to check loadmore position immediately after mounted | _boolean_ | `true` |
| load-offset | The `on-loadmore` will be Emitted when the distance from the scroll bar to the bottom is less than the `load-offset` | _number \| string_ | `50` |
| finished | Whether the data is loaded | _boolean_ | `false` |
| error | Whether the data is loaded error, the `on-loadmore` will be Emitted only when error text clicked, the `sync` modifier is needed | _boolean_ | `false` |
| loading-text | The Text when loading in loaded | _string_ | `Loading` |
| finished-text | The Text when the data is loaded | _string_ | `No more data` |
| error-text | The Text when error loaded | _string_ | `Request failed, click to reload` |
### Methods
Use ref to get List instance and call instance methods.
| Name | Description | Attribute | Return value |
| ----- | --------------------- | --------- | ------------ |
| checkScroll | Check scroll position | - | - |
## Example
You can see the demo for quickly understand how to use this package.
```bash
git clone git@github.com:staticdeng/vuejs-loadmore.git
yarn install
yarn example:dev
```