Skip to content

Vue 组合式 API

Axle 提供了 Vue 组合式 API 风格的用法。

引入

ts
import { createUseAxle } from 'rattail/axle/use'

创建 useAxle

ts
import { createAxle } from 'rattail/axle'
import { createUseAxle } from 'rattail/axle/use'

const axle = createAxle({ baseURL: '/api' })

const useAxle = createUseAxle({ axle })

基本用法

html
<script setup>
const [
  users,
  getUsers,
  { loading, error, uploadProgress, downloadProgress, abort, resetValue },
] = useAxle({
  value: [],

  method: 'get',

  url: '/user',

  immediate: true,

  params: {
    current: 1,
    pageSize: 10,
  },

  config: {
    headers: {},
  },

  onBefore(refs) {
    const { data, loading, error } = refs
    const { uploadProgress, downloadProgress } = refs
  },

  onTransform(response, refs) {
    return response.data
  },

  onSuccess(response, refs) {},

  onError(error, refs) {},

  onAfter(refs) {},
})
</script>

<template>
  <span>{{ loading ? 'loading...' : users }}</span>
  <button @click="getUsers">发送请求</button>
  <button @click="abort">中止请求</button>
</template>

选项

选项描述默认值
value请求初始值-
method请求方法-
url请求地址,可以是 getter 函数-
immediate是否立即发送请求true
resetValue请求前是否重置值false
cloneResetValue重置值时的克隆策略。true 使用深拷贝,也可传入自定义克隆函数 (value) => valuefalse
params请求参数,可以是 getter 函数{}
configAxios 配置,可以是 getter 函数{}
onBefore(refs)请求前调用。refs 包含 dataloadingerroruploadProgressdownloadProgress-
onTransform(response, refs)在赋值给 value 前转换响应数据-
onSuccess(response, refs)请求成功时调用-
onError(error, refs)请求错误时调用-
onAfter(refs)请求完成后调用(无论成功或失败)-

Runner 增强

Runner(返回值元组的第二个元素)包含所有额外属性,因此可以直接访问而无需解构第三个元素。

之前:

html
<script setup>
const [users, getUsers, { loading }] = useAxle({
  method: 'get',
  url: '/user',
})
</script>

<template>
  <span>{{ loading ? 'loading...' : users }}</span>
  <button @click="getUsers">发送请求</button>
</template>

之后:

html
<script setup>
const [users, getUsers] = useAxle({
  method: 'get',
  url: '/user',
})
</script>

<template>
  <span>{{ getUsers.loading.value ? 'loading...' : users }}</span>
  <button @click="getUsers">发送请求</button>
</template>

额外属性

返回值元组的第三个元素,包含以下属性:

属性描述
loading加载状态 ref
error错误状态 ref
uploadProgress上传进度 ref
downloadProgress下载进度 ref
abort中止请求函数
resetValue用于 value 重置