<style>
.demo-pull-refresh {
  .zan-doc-demo-block__title,
  .zan-doc-demo-block__subtitle {
    display: none;
  }

  .van-pull-refresh {
    height: 450px;
    background-color: #fff;
    
    .zan-doc-demo-block__title {
      display: block;
    }
    
    p {
      margin: 10px 0 0 15px;
    }
  }
}
</style>

<script>
import { Toast } from 'packages';

export default {
  data() {
    return {
      count: 0,
      isLoading: false
    }
  },

  watch: {
    isLoading() {
      if (this.isLoading) {
        setTimeout(() => {
          Toast('刷新成功');
          this.isLoading = false;
          this.count++;
        }, 500);
      }
    }
  },

  mounted() {
    const head = document.querySelector('.van-pull-refresh__head');
    head.insertAdjacentHTML('afterend', '<h1 class="zan-doc-demo-block__title">PullRefresh 下拉刷新</h1>');
  }
}
</script>

## PullRefresh 下拉刷新

### 使用指南
``` javascript
import { PullRefresh } from 'vant';

Vue.component(PullRefresh.name, PullRefresh);
```

### 代码演示

:::demo  
```html
<!-- 通过 v-model 控制加载状态 -->
<van-pull-refresh v-model="isLoading">
  <p>刷新次数: {{ count }}</p>
</van-pull-refresh>
```

```javascript
export default {
  data() {
    return {
      count: 0,
      isLoading: false
    }
  },

  watch: {
    isLoading() {
      if (this.isLoading) {
        setTimeout(() => {
          Toast('刷新成功');
          this.isLoading = false;
          this.count++;
        }, 500);
      }
    }
  }
}
```
:::

### API

| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|-----------|-----------|-----------|-------------|-------------|
| v-model | 是否在加载中 | `Boolean`  | - | - |
| pullingText | 下拉过程中顶部文案 | `String`  | `下拉即可刷新...` | - |
| loosingText | 释放过程中顶部文案 | `String`  | `释放即可刷新...` | - |
| loadingText | 加载过程中顶部文案 | `String`  | `加载中...` | - |
| animationDuration | 动画时长 | `Number`  | `300` | - |
| headHeight | 顶部内容高度 | `Number`  | `50` | - |

### Slot

| name       | 描述      |
|-----------|-----------|
| - | 自定义内容 |
| normal | 非下拉状态时顶部内容 |
| pulling | 下拉过程中顶部内容 |
| loosing | 释放过程中顶部内容 |
| loading | 加载过程中顶部内容 |