--- id: mutationOptions title: mutationOptions --- ## Call Signature ```ts function mutationOptions(options): WithRequired, "mutationKey">; ``` Defined in: [packages/vue-query/src/mutationOptions.ts:34](https://github.com/TanStack/query/blob/main/packages/vue-query/src/mutationOptions.ts#L34) You can generally pass everything to `mutationOptions` that you can also pass to `useMutation`. A `mutationKey` is required on this overload so the mutation can be looked up later, e.g. with `useMutationState`. ### Type Parameters #### TData `TData` = `unknown` #### TError `TError` = `Error` #### TVariables `TVariables` = `void` #### TOnMutateResult `TOnMutateResult` = `unknown` ### Parameters #### options [`WithRequired`](../type-aliases/WithRequired.md)\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> The mutation options to use, identical to what you'd pass to `useMutation`, with a required `mutationKey`. ### Returns [`WithRequired`](../type-aliases/WithRequired.md)\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> The same options object, unchanged. ### See [useMutation](useMutation.md) to run the mutation these options describe. ### Example Looking the mutation up elsewhere via its `mutationKey`, e.g. for a global "saving…" indicator: ```vue ``` ## Call Signature ```ts function mutationOptions(options): () => WithRequired, "mutationKey">; ``` Defined in: [packages/vue-query/src/mutationOptions.ts:80](https://github.com/TanStack/query/blob/main/packages/vue-query/src/mutationOptions.ts#L80) Same as the plain-object overload with a required `mutationKey`, but for options that close over reactive state (`ref`s read inside the function body). Wrap them in a getter so `useMutation` and the other consumers always read the current values instead of the ones captured when the options were created. ### Type Parameters #### TData `TData` = `unknown` #### TError `TError` = `Error` #### TVariables `TVariables` = `void` #### TOnMutateResult `TOnMutateResult` = `unknown` ### Parameters #### options () => [`WithRequired`](../type-aliases/WithRequired.md)\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> A function returning the mutation options to use, with a required `mutationKey`, re-evaluated on demand. ### Returns A function that returns the same options object, unchanged. ```ts (): WithRequired, "mutationKey">; ``` #### Returns [`WithRequired`](../type-aliases/WithRequired.md)\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> ### See [useMutation](useMutation.md) to run the mutation these options describe. ### Example ```vue ``` ## Call Signature ```ts function mutationOptions(options): Omit, "mutationKey">; ``` Defined in: [packages/vue-query/src/mutationOptions.ts:124](https://github.com/TanStack/query/blob/main/packages/vue-query/src/mutationOptions.ts#L124) You can generally pass everything to `mutationOptions` that you can also pass to `useMutation`. No `mutationKey` is required on this overload — use this when you don't need to target the mutation via a `mutationKey` filter later (e.g. with `useMutationState`); it can still be observed through other filters, such as `status`. ### Type Parameters #### TData `TData` = `unknown` #### TError `TError` = `Error` #### TVariables `TVariables` = `void` #### TOnMutateResult `TOnMutateResult` = `unknown` ### Parameters #### options `Omit`\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> The mutation options to use, identical to what you'd pass to `useMutation`, without a `mutationKey`. ### Returns `Omit`\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> The same options object, unchanged. ### See [useMutation](useMutation.md) to run the mutation these options describe. ### Remarks See the other overload's example for looking a mutation up via `useMutationState`. ### Example ```vue ``` ## Call Signature ```ts function mutationOptions(options): () => Omit, "mutationKey">; ``` Defined in: [packages/vue-query/src/mutationOptions.ts:169](https://github.com/TanStack/query/blob/main/packages/vue-query/src/mutationOptions.ts#L169) Same as the plain-object overload without a `mutationKey`, but for options that close over reactive state (`ref`s read inside the function body). Wrap them in a getter so `useMutation` and the other consumers always read the current values instead of the ones captured when the options were created. ### Type Parameters #### TData `TData` = `unknown` #### TError `TError` = `Error` #### TVariables `TVariables` = `void` #### TOnMutateResult `TOnMutateResult` = `unknown` ### Parameters #### options () => `Omit`\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> A function returning the mutation options to use, without a `mutationKey`, re-evaluated on demand. ### Returns A function that returns the same options object, unchanged. ```ts (): Omit, "mutationKey">; ``` #### Returns `Omit`\<[`MutationOptions`](../type-aliases/MutationOptions.md)\<`TData`, `TError`, `TVariables`, `TOnMutateResult`\>, `"mutationKey"`\> ### See [useMutation](useMutation.md) to run the mutation these options describe. ### Example ```vue ```