💾
FloppyDisk.JS
DocsDocsExamplesExamplesBlogBlog
GitHubGitHub (opens in a new tab)
  • Getting Started
  • Comparison
    • Introduction
    • Store Event
    • Interception
    • Watch Component
    • Silent Update
    • As Local State
    • Persist State
    • With Immer
    • Introduction
    • Stores Event
    • Introduction
    • Single Query
    • Single Query with Params
    • Network Mode
    • Paginated/Infinite Query
    • Dependent Queries
    • Initial Query Data (SSR/SSG)
    • Error Retries
    • Lazy Query
    • Disabling Query
    • Prefetching
    • Query Invalidation
    • Optimistic Update
    • Window Focus Refetching
    • Auto Refetching / Polling
    • Suspense
    • Custom Logger
    • Query Cancellation
    • Introduction
    • Invalidation from Mutation
    • Update from Mutation Response
    • Optimistic Update
    • Offline Mutation
  • TypeScript
  • GraphQL
  • React Native
  • Firebase/Supabase Integration

  • API
  • Experimental Features

  • Change Log ↗ (opens in a new tab)
Question? Give us feedback → (opens in a new tab)Edit this page on GitHub →
Docs
Mutation
Optimistic Update

Optimistic Update

function SaveProduct() {
  const { mutate, isWaiting } = useEditProductMutation();
  const { getValues } = useFormContext();
 
  return (
    <button
      disabled={isWaiting}
      onClick={() => {
        const payload = getValues();
 
        const { revert, invalidate } = useProductQuery.optimisticUpdate({
          key: { id: payload.id },
          response: payload,
        });
 
        mutate(payload).then(({ response, error }) => {
          if (error) {
            revert();
          }
          invalidate();
        });
      }}
    >
      Save
    </button>
  );
}
Update from Mutation ResponseOffline Mutation

MIT 2024 © Nextra.