生命周期
TIP
为保证体验,请打开开发者工具,选择网络面板,观察网络请求状态。如果请求响应时间过短,可以调到低速3G模式延长响应时间。
useRequest
提供了部分生命周期方法来帮助你在请求发起前后、请求成功、请求失败、触发缓存、取消请求时进行一些操作。
监听请求前
通过传入 onBefore 函数,可以在请求发起前执行操作。
const onBefore = () => {
onBeforeStr.value = 'onBefore triggered';
};
const { result, loading, error, run } = useRequest(request, {
onBefore,
});
监听请求后
通过传入 onAfter 函数,可以在请求完成后执行操作。
const onAfter = () => {
onAfterStr.value = 'onAfter triggered';
};
const { result, loading, error, run } = useRequest(request, {
onAfter,
});
监听请求成功
通过传入 onSuccess 函数,可以在请求成功时执行操作。
const onSuccess = (result: IResult) => {
onSuccessStr.value = `onSuccess triggered: ${JSON.stringify(result)}`;
};
const { result, loading, error, run } = useRequest(request, {
onSuccess,
});
监听请求失败
通过传入 onError 函数,可以在请求失败时执行操作。
const onError = (error: Error) => {
onErrorStr.value = `onError triggered: ${error}`;
};
const { result, loading, error, run } = useRequest(request, {
onError,
});
监听缓存
参考监听缓存。
监听取消请求
参考监听取消请求。
完整示例
result:
loading: false
error:
onBefore:
onAfter:
onSuccess:
onError:
<template>
<div class="demo-container">
<h3>result: <span>{{ result }}</span></h3>
<h3>loading: <span>{{ loading }}</span></h3>
<h3>error: <span>{{ error }}</span></h3>
<h3>onBefore: <span>{{ onBeforeStr }}</span></h3>
<h3>onAfter: <span>{{ onAfterStr }}</span></h3>
<h3>onSuccess: <span>{{ onSuccessStr }}</span></h3>
<h3>onError: <span>{{ onErrorStr }}</span></h3>
<button class="primary" @click="handleRun">run</button>
<button @click="handleRunError">runError</button>
<button @click="reset">reset</button>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { useRequest } from '@superarale/vue-use-request';
import { request, IParams, IResult, correctKey } from './request';
const reset = () => {
result.value = null;
loading.value = false;
error.value = null;
onBeforeStr.value = '';
onAfterStr.value = '';
onSuccessStr.value = '';
onErrorStr.value = '';
};
const onBeforeStr = ref('');
const onAfterStr = ref('');
const onSuccessStr =ref('');
const onErrorStr = ref('');
const onBefore = () => {
onBeforeStr.value = 'onBefore triggered';
};
const onAfter = () => {
onAfterStr.value = 'onAfter triggered';
};
const onSuccess = (result: IResult) => {
onSuccessStr.value = `onSuccess triggered: ${JSON.stringify(result)}`;
};
const onError = (error: Error) => {
onErrorStr.value = `onError triggered: ${error}`;
};
const { result, loading, error, run } = useRequest(request, {
onBefore,
onAfter,
onSuccess,
onError,
});
const handleRun = () => {
const params: IParams = {
key: correctKey,
};
run(params);
};
const handleRunError = () => {
const params: IParams = {
key: 'badkey',
};
run(params);
};
</script>