function createOptimisticAction<TVariables>(options): (variables) => Transaction
function createOptimisticAction<TVariables>(options): (variables) => Transaction
Defined in: packages/db/src/optimistic-action.ts:41
Creates an optimistic action function that applies local optimistic updates immediately before executing the actual mutation on the server.
This pattern allows for responsive UI updates while the actual mutation is in progress. The optimistic update is applied via the onMutate callback, and the server mutation is executed via the mutationFn.
• TVariables = unknown
The type of variables that will be passed to the action function
CreateOptimisticActionsOptions<TVariables>
Configuration options for the optimistic action
Function
A function that accepts variables of type TVariables and returns a Transaction
TVariables
const addTodo = createOptimisticAction<string>({
onMutate: (text) => {
// Instantly applies local optimistic state
todoCollection.insert({
id: uuid(),
text,
completed: false
})
},
mutationFn: async (text, params) => {
// Persist the todo to your backend
const response = await fetch('/api/todos', {
method: 'POST',
body: JSON.stringify({ text, completed: false }),
})
return response.json()
}
})
// Usage
const transaction = addTodo('New Todo Item')
const addTodo = createOptimisticAction<string>({
onMutate: (text) => {
// Instantly applies local optimistic state
todoCollection.insert({
id: uuid(),
text,
completed: false
})
},
mutationFn: async (text, params) => {
// Persist the todo to your backend
const response = await fetch('/api/todos', {
method: 'POST',
body: JSON.stringify({ text, completed: false }),
})
return response.json()
}
})
// Usage
const transaction = addTodo('New Todo Item')
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.