乐闻世界logo
搜索文章和话题

How to make a React-Query with React- Hook -Form Autosave

1个答案

1

Steps to Implement Auto-Save with React Hook Form and React Query:

1. Setting Up React Hook Form

First, we'll set up React Hook Form. We'll utilize the useForm hook to manage form state and validation.

jsx
import React from 'react'; import { useForm } from 'react-hook-form'; function FormComponent() { const { register, handleSubmit, watch } = useForm(); // Other logic }

2. Monitoring Form Field Changes

To achieve auto-save, we must monitor changes in form fields. The watch function in React Hook Form enables tracking changes to one or more form fields.

jsx
const formData = watch(); // Monitor all fields

3. Using React Query's Mutation for Data Saving

React Query offers the useMutation hook to manage asynchronous data updates. We'll employ it to submit update requests.

jsx
import { useMutation } from 'react-query'; const mutation = useMutation(newData => { return axios.post('/api/data', newData); });

4. Implementing Form Auto-Save Functionality

Next, we integrate watch with useMutation to achieve auto-save. Whenever form data changes, we utilize the useEffect hook to initiate the save process.

jsx
React.useEffect(() => { const subscription = watch((value, { name, type }) => { mutation.mutate(value); }); return () => subscription.unsubscribe(); }, [watch, mutation]);

Complete Component Example

jsx
import React from 'react'; import { useForm } from 'react-hook-form'; import { useMutation } from 'react-query'; import axios from 'axios'; function FormComponent() { const { register, handleSubmit, watch } = useForm(); const mutation = useMutation(newData => { return axios.post('/api/data', newData); }); const formData = watch(); React.useEffect(() => { const subscription = watch((value, { name, type }) => { mutation.mutate(value); }); return () => subscription.unsubscribe(); }, [watch, mutation]); return ( <form> <input name="username" ref={register} defaultValue="test" /> <input name="email" ref={register} defaultValue="test@example.com" /> <button type="submit">Submit</button> </form> ); }

Summary

By implementing these steps, you can create a form with auto-save capabilities. During user input, React Hook Form tracks changes and automatically initiates data saving via React Query's mutation. This pattern is ideal for scenarios requiring real-time draft saving or user input preservation.

2024年8月5日 11:20 回复

你的答案