Skip to content

useMutationWithLock

useMutationWithLock(fn, mutationOptions?): UseMutationResult<unknown, Error, unknown, unknown> & { run: () => Promise<any> }

结合 useMutation + useLock 的优势

  1. 可对异步函数进行加锁,fn 必须使用异步函数,否则会导致锁定状态失效
  2. 可以获取函数的执行状态,利用 useMutation 的 isPending 状态来控制 Spin 等

参数

NameType
fn(any: any) => Promise<any>
mutationOptions?UseMutationOptions<any, Error, void, any>

返回值

UseMutationResult<unknown, Error, unknown, unknown> & { run: () => Promise<any> }

示例

ts
export default function Demo() {
 const {run: deleteSomething, isPending: isDeletingSomething} =
   useMutationWithLock(() => {
     return io.deleteSomething()
   })

 return (
   <Button
     loading={isDeletingSomething}
     size="small"
     onClick={deleteSomething}
   >
     删除
   </Button>
 )
}

源码

use-mutation-with-lock.js