함수: createPacedMutations()
function createPacedMutations<TVariables, T>(config): (variables) => Transaction<T>;
정의 위치: packages/db/src/paced-mutations.ts:87
플러그형 타이밍 전략을 사용하는 속도 조절 뮤테이션 관리자를 생성합니다.
이 함수는 디바운싱, 큐잉 또는 스로틀링과 같은 전략을 사용하여 낙관적 뮤테이션이 백엔드에 영속화되는 시점과 방식을 제어하는 방법을 제공합니다. 낙관적 업데이트는 onMutate를 통해 즉시 적용되고, 실제 영속화는 전략에 의해 제어됩니다.
반환된 함수는 TVariables 타입의 변수를 받아 영속화가 완료되는 시점을 확인하거나 오류를 처리하기 위해 await할 수 있는 Transaction 객체를 반환합니다.
타입 매개변수
TVariables
TVariables = unknown
T
T 확장 object = Record<string, unknown>
매개변수
config
PacedMutationsConfig<TVariables, T>
onMutate, mutationFn 및 strategy를 포함하는 구성입니다
반환값
변수를 받아 Transaction을 반환하는 함수입니다
(variables): Transaction<T>;
매개변수
variables
TVariables
반환값
Transaction<T>
예제
// Debounced mutations for auto-save
const updateTodo = createPacedMutations<string>({
onMutate: (text) => {
// Apply optimistic update immediately
collection.update(id, draft => { draft.text = text })
},
mutationFn: async ({ transaction }) => {
await api.save(transaction.mutations)
},
strategy: debounceStrategy({ wait: 500 })
})
// Call with variables, returns a transaction
const tx = updateTodo('New text')
// Await persistence or handle errors
await tx.isPersisted.promise
// Queue strategy for sequential processing
const addTodo = createPacedMutations<{ text: string }>({
onMutate: ({ text }) => {
collection.insert({ id: uuid(), text, completed: false })
},
mutationFn: async ({ transaction }) => {
await api.save(transaction.mutations)
},
strategy: queueStrategy({
wait: 200,
addItemsTo: 'back',
getItemsFrom: 'front'
})
})