步骤2-调整响应处理
在上一节的保守请求示例中,我们在 Todo 项的创建、编辑和删除请求响应后调用fetch
重新拉取数据刷新的页面,为了能在操作后立即展示结果,我们需要进行以下调整:
- 将创建、编辑和删除请求的行为模式设置为
silent
,它们将会在请求时立即触发成功回调; - 手动更新列表,而不是拉取数据,使用虚拟数据占位服务端的响应数据;
- 保存操作记录,用于在刷新页面时进行数据补偿;
设置行为模式
通过配置参数behavior
进行设置,可选参数为queue
、silent
、static
,或者一个返回行为数据的函数实现动态设置行为模式,默认为queue
。
以下为静态设置 behavior 参数。
useSQRequest(createOrEditTodo, {
behavior: 'silent',
immediate: false
});
以下为动态设置 behavior 参数。
const { send } = useSQRequest(createOrEditTodo, {
// arg参数可通过send函数传入
behavior: arg => {
if (arg === 0) return 'silent';
return 'queue';
},
immediate: false
});
当 behavior 设置为函数时,它将在每次发起请求时被调用,来确定本次请求以哪种行为来处理。
静默队列说明
将 behavior 参数设置为queue
或silent
后,请求将进入静默队列等待发起请求,默认情况下它们将进入名称为default
的队列,你还可以指定其他队列来保存 silentMethod 实例,队列之间互不干扰。
useSQRequest(createOrEditTodo, {
// 指定请求信息进入名称为queue-2的队列中
queue: 'queue-2',
behavior: 'silent',
immediate: false
});