React 前端导航

React Query 入门教程

React Query 是一个用于管理 React 应用状态的库,提供简单、统一的方法来获取、缓存和更新数据,并且支持常见的数据操作,例如查询参数、分页、排序和搜索等等。

下面是使用 React Query 的入门教程:

  1. 安装 React Query

使用 npm 安装 React Query:

npm install react-query

使用 yarn 安装

yarn add react-query

  1. 创建 Query

使用 useQuery 钩子创建一个 Query:

import { useQuery } from 'react-query';
function Demo() {
  const { data, isLoading, error } = useQuery('todos', () =>
    fetch('https://domain/todos').then((res) =>
      res.json()
    )
  );
  if (isLoading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;
  return (
    <ul>
      {data.map((todo) => (
        <li key={todo.id}>{todo.title}</li>
      ))}
    </ul>
  );
}

这个 Query 使用 fetch 获取 https://domain/todos 的数据,并将其存储在名为 todos 的缓存中。如果数据还未缓存,useQuery 将立即使用提供的函数进行获取并缓存。

  1. 组件状态管理

React Query 让你可以从组件层面管理状态。例如,你可以用 Query 的 isFetching 属性检查 Query 是否正在获取数据,并且可以使用 isLoading 属性在数据加载期间显示 loading 状态。

import { useQuery } from 'react-query';
function Demo() {
  const { data, isLoading, error, isFetching } = useQuery('todos', () =>
    fetch('https://jsonplaceholder.typicode.com/todos').then((res) =>
      res.json()
    )
  );
  if (isLoading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;
  return (
    <>
      <ul>
        {data.map((todo) => (
          <li key={todo.id}>{todo.title}</li>
        ))}
      </ul>
      {isFetching ? <p>Updating...</p> : null}
    </>
  );
}
  1. 处理并发请求

React Query 提供了一个 useQueries 钩子函数,可以一次处理多个 Query。在一些场景下这非常有用,你的组件可能需要同时获取多个数据集合。

import { useQueries } from 'react-query';
function Example() {
  const queries = useQueries([
    {
      queryKey: 'todos',
      queryFn: () =>
        fetch('https://domain/todos').then((res) =>
          res.json()
        ),
    },
    {
      queryKey: 'users',
      queryFn: () =>
        fetch('https://domain/users').then((res) =>
          res.json()
        ),
    },
  ]);
  const [todos, users] = queries;
  if (todos.isLoading || users.isLoading) return <p>Loading...</p>;
  if (todos.error || users.error)
    return <p>Error: {(todos.error || users.error).message}</p>;
  return (
    <>
      <h2>Todos</h2>
      <ul>
        {todos.data.map((todo) => (
          <li key={todo.id}>{todo.title}</li>
        ))}
      </ul>
      <h2>Users</h2>
      <ul>
        {users.data.map((user) => (
          <li key={user.id}>{user.name}</li>
        ))}
      </ul>
    </>
  );
}

以上就是 React Query 的简单教程。React Query 提供了更多的选项和高级功能,如 mutation、缓存策略、自动重试等,可以在react query 文档中找到更详细的信息。

更多React组件可查看:React组件汇总

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/201

#react#query#状态管理

相关推荐

react中实现markdown文件读取展示

react中实现markdown文件读取展示

umi实践问题汇总--持续更新

在使用umi的过程中所遇到问题的记录汇总