跳到主要内容

useAction()

function useAction<Options, RT>(promiseFn): ActionResource<Options, RT>;

Defined in: rxdb-vue/src/use-action.ts:54

把一个异步函数包成带加载状态的可调用 action。

Type Parameters​

Type ParameterDefault typeDescription
Optionsvoid调用参数类型;默认 void 表示无参
RTunknown异步函数的返回类型

Parameters​

ParameterTypeDescription
promiseFn(options) => Promise<RT>被包装的异步函数;在 setup 期捕获一次,之后不再重新读取

Returns​

ActionResource<Options, RT>

见 ActionResource

Example​

const save = useAction(async (todo: Todo) => repository.save(todo));

// 模板里用 save.isPending 禁用按钮,用 save.execute(todo) 触发

Remarks​

并发语义:内部按未完成调用计数(而非布尔标志),因此多次并发调用时 isPending 会保持为真直到最后一个完成 —— 先完成者不会提前把它置为 false。 action 本身不做去重也不取消在途调用;需要「同一时刻只跑一个」请由调用方在 isPending 为真时自行拦截。

被包装函数抛出的错误原样向上冒泡,计数在 finally 中恢复。

不依赖组件实例,可以在 setup 之外调用;返回的 isPending 是普通 computed, 生命周期跟随持有它的作用域,没有需要清理的订阅。

三端等价实现:Angular useAction(Signal<boolean>)、React useAction(快照 boolean)。