Home  >  Article  >  Web Front-end  >  Data Management with React Query and Databases: A Best Practices Guide

Data Management with React Query and Databases: A Best Practices Guide

王林
王林Original
2023-09-27 16:13:431444browse

使用 React Query 和数据库进行数据管理:最佳实践指南

Data Management with React Query and Database: Best Practice Guide

Introduction:
In modern front-end development, managing data is a very important Task. As users' demands for high performance and stability continue to increase, we need to consider how to better organize and manage application data. React Query is a powerful and easy-to-use data management tool that provides a simple and flexible way to handle the retrieval, update and caching of data. This article explains best practices for data management using React Query and a database, and provides specific code examples.

1. Install React Query and related dependencies
First, we need to install React Query and related dependencies. These packages can be installed using npm or yarn.

$ npm install react-query react-router-dom

2. Configure React QueryProvider
In the entry file, we need to add React QueryProvider to the application. The React QueryProvider is responsible for providing data management-related context to components in your application.

import { QueryClient, QueryClientProvider } from 'react-query';

const queryClient = new QueryClient();

ReactDOM.render(
  <QueryClientProvider client={queryClient}>
    <App />
  </QueryClientProvider>,
  document.getElementById('root')
);

3. Initiate a query request
In React Query, we can use the useQuery hook to initiate a query request. The first parameter of the useQuery hook is a string representing the key of the data to be obtained. The second parameter is an asynchronous function, which is used to actually get the data.

import { useQuery } from 'react-query';

function UserList() {
  const { isLoading, data, error } = useQuery('users', async () => {
    const response = await fetch('/api/users');
    const data = await response.json();
    return data;
  });

  if (isLoading) {
    return <div>Loading...</div>;
  }

  if (error) {
    return <div>Error: {error.message}</div>;
  }

  return (
    <ul>
      {data.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

4. Update data
In addition to obtaining data, React Query also provides useMutation hooks to handle data updates. The useMutation hook accepts an asynchronous function that is used to actually update the data. It returns an array where the first element is a function that triggers the update operation. In addition, we can also use some options to control its behavior when issuing an update request.

import { useMutation } from 'react-query';

function UpdateUserForm({ user }) {
  const mutation = useMutation(updatedUser => {
    return fetch(`/api/users/${user.id}`, {
      method: 'PUT',
      body: JSON.stringify(updatedUser),
    });
  });

  const handleSubmit = event => {
    event.preventDefault();
    const formData = new FormData(event.target);
    const updatedUser = {
      name: formData.get('name'),
      age: formData.get('age'),
    };
    mutation.mutate(updatedUser);
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="text" name="name" defaultValue={user.name} />
      <input type="number" name="age" defaultValue={user.age} />
      <button type="submit">Update</button>
    </form>
  );
}

5. Caching data
React Query will automatically cache the queried data by default and update it when needed. We can use the useQueryClient hook and queryClient.setQueryData method to update the data manually. Identify and update data by queried keys.

import { useQuery, useQueryClient } from 'react-query';

function UserList() {
  const queryClient = useQueryClient();

  const { isLoading, data, error } = useQuery('users', async () => {
    const response = await fetch('/api/users');
    const data = await response.json();
    return data;
  });

  const handleUpdateUser = user => {
    // update the data in the cache
    queryClient.setQueryData('users', old => {
      const updatedData = old.map(u => {
        if (u.id === user.id) {
          return {
            ...u,
            name: user.name,
            age: user.age,
          };
        }
        return u;
      });
      return updatedData;
    });
  };

  // ...
}

6. Using the database
React Query does not limit the method we use to obtain data. If our data is stored in the database, we only need to write the corresponding code in the query function to operate the database.

import { useQuery } from 'react-query';
import { db } from 'path/to/database';

function UserList() {
  const { isLoading, data, error } = useQuery('users', async () => {
    const users = await db.get('users');
    return users;
  });

  // ...
}

7. Summary
By using React Query and database, we can better organize and manage the data in the application and provide a good user experience. This article provides best practice guidance for data management using React Query, with concrete code examples. Hope this helps you!

The above is the detailed content of Data Management with React Query and Databases: A Best Practices Guide. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn