使用 RTK Query 的好处:可扩展且高效的解决方案

简介: 使用 RTK Query 的好处:可扩展且高效的解决方案

作为开发人员,我们一直在寻找简化工作流程和提高应用程序性能的方法。在 React 生态系统中获得巨大关注的一个工具是 Redux 工具包查询 (RTK Query)。这个库建立在 Redux Toolkit 之上,提供了一个用于管理异步数据获取和缓存的解决方案。在本文中,我们将探讨使用 RTK Query 的主要优势。

使用 RTK Query 的好处:可扩展且高效的解决方案

1. 简单易用

       RTK Query 最引人注目的优势之一是它的简单性。这样就可以轻松地为各种操作定义端点,例如查询数据以及创建、更新和删除资源。该方法允许您以简洁和声明性的方式定义这些终结点,从而减少样板代码并提高可读性。injectEndpoints

1
booksApi.injectEndpoints({
2


3
  endpoints: builder => ({
4


5
    getBooks: builder.query<IBook[], void | string[]>({
6


7
      // ...
8


9
    }),
10


11
    createBundle: builder.mutation<any, void>({
12


13
      // ...
14


15
    }),
16


17
    addBook: builder.mutation<string, AddBookArgs>({
18


19
      // ...
20


21
    }),
22


23
    // ...
24


25
  }),
26


27
});

2. 自动缓存和失效

       RTK Query 的特点之一是其内置的缓存机制。该库会自动缓存从端点获取的数据,确保从缓存中处理对相同数据的后续请求,从而减少网络开销并提高性能。这些示例演示了 RTK Query 如何使用该选项处理缓存失效。

1
createBundle: builder.mutation<any, void>({
2


3
  invalidatesTags: [BooksTag],
4


5
  // ...
6


7
}),
8


9
addBook: builder.mutation<string, AddBookArgs>({
10


11
  invalidatesTags: [BooksTag],
12


13
  // ...
14


15
}),

通过指定 ,RTK 查询知道在执行更改(例如,或)时要使哪些缓存条目失效,从而确保缓存保持最新并与服务器数据一致。BooksTagcreateBundleaddBook

3. 可扩展性和可维护性

       随着应用程序复杂性的增加,管理异步数据提取和缓存可能变得越来越具有挑战性。RTK Query 的模块化方法和关注点分离使扩展和维护代码库变得更加容易。每个终结点都是独立定义的,因此您可以根据需要轻松添加、修改或删除终结点,而不会影响应用程序的其余部分。

1
endpoints: builder => ({
2


3
  getBooks: builder.query<IBook[], void | string[]>({
4


5
    // ...
6


7
  }),
8


9
  createBundle: builder.mutation<any, void>({
10


11
    // ...
12


13
  }),
14


15
  // ...
16


17
})

这种模块化结构促进了代码的可重用性,并使其更容易对应用程序的不同部分进行推理,从而在团队中实现更好的可维护性和协作。

4. 高效的数据获取和规范化

       RTK Query 内置支持高效的数据获取和规范化。演示如何从多个源获取数据并使用该函数规范化数据。但是,可以优化当前的实现,以减少代码重复并提高可读性。下面是代码的优化版本:queryFntoSimpleBooks

1
async queryFn(collections) {
2


3
  try {
4


5
    const [snapshot, snapshot2] = await Promise.all(
6


7
      collections.map(fetchCachedCollection)
8


9
    ]);
10


11
    const success = await getBooksBundle();
12


13
    const books = success
14


15
      ? toSimpleBooks([...snapshot.docs, ...snapshot2.docs])
16


17
      : [];
18


19
    return { data: books };
20


21
  } catch (error) {
22


23
    return { error };
24


25
  }
26


27
}

在这个优化版本中,我们用于同时获取两个集合( 和 )。这种方法可确保我们不必等待一个集合完成提取后再开始另一个集合,从而可能减少整体提取时间。Promise.alllatest-books-1-querylatest-books-2-query

       此外,我们已将调用移至块内,确保仅当成功获取集合时才执行调用。此更改有助于保持明确的关注点分离,并使代码更易于推理。getBooksBundletry

       通过利用 RTK Query 的高效数据获取功能并采用最佳实践,您可以确保您的应用程序以优化和高效的方式获取和规范化数据,从而提高性能和用户体验。Promise.all

5.外露钩子的易用性

       RTK Query 的突出功能之一是它通过其公开的钩子提供的易用性。最后,我喜欢导出可用的生成类型化钩子,以便您可以使用它们(即 、 等)与 React 组件中定义的端点进行交互。这些钩子抽象化了管理异步数据提取和缓存的复杂性,使你能够专注于构建应用程序的逻辑。useGetBooksQueryuseCreateBundleMutation

1
export const {
2


3
  useGetBooksQuery,
4


5
  useLazyGetBooksQuery,
6


7
  useCreateBundleMutation,
8


9
  useAddBookMutation,
10


11
  useDeleteBookMutation,
12


13
  useUpdateBookMutation,
14


15
} = booksApi;

通过利用这些钩子,您可以获取数据、触发突变并处理加载和错误状态,同时受益于 RTK Query 提供的缓存和失效机制。

       通过采用 RTK Query,您可以访问用于管理异步数据获取和缓存的解决方案,同时体验其公开的钩子提供的简单性、可扩展性和易用性。无论您是构建小型应用程序还是大型项目,RTK Query 都可以帮助您简化开发流程并提供高性能、响应迅速的应用程序。

目录
相关文章
|
2月前
|
开发框架 人工智能 安全
Promptic:轻量级 LLM 应用开发框架,提供完善的底层功能,使开发者更专注于构建上层功能
Promptic 是一个轻量级的 LLM 应用开发框架,支持通过一行代码切换不同的 LLM 服务提供商。它提供了类型安全的输出、流式支持、内置对话记忆、错误处理和重试等功能,帮助开发者专注于构建功能,而不是底层的复杂性。
88 6
Promptic:轻量级 LLM 应用开发框架,提供完善的底层功能,使开发者更专注于构建上层功能
|
9月前
|
前端开发 数据处理 API
后端开发:构建稳健与高效的服务器逻辑
后端开发:构建稳健与高效的服务器逻辑
|
3月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
57 4
|
4月前
|
存储 监控 NoSQL
探索后端技术:构建高效、可扩展应用的秘诀
在当今数字化时代,后端技术是任何成功应用程序的核心。本文将深入探讨如何利用先进的后端技术和策略来创建高效、可靠和可扩展的应用程序。我们将从基础架构的选择开始,逐步深入到数据管理、安全性、性能优化等关键领域,旨在为开发者提供一套全面的解决方案。
|
6月前
|
弹性计算 关系型数据库 Serverless
函数计算驱动多媒体文件处理:高效、稳定与成本优化实践
本次测评的解决方案《告别资源瓶颈,函数计算驱动多媒体文件处理》展示了如何利用阿里云函数计算高效处理多媒体文件。文档结构清晰、内容详实,适合新客户参考。方案提供了一键部署与手动部署两种方式,前者简便快捷,后者灵活性高但步骤较多。通过部署,用户可体验到基于函数计算的文件处理服务,显著提升处理效率和系统稳定性。此外,测评还对比了应用内处理文件与函数计算处理文件的不同,突出了函数计算在资源管理和成本控制方面的优势。
22738 20
|
6月前
|
编解码 弹性计算 Serverless
解锁多媒体处理新纪元:阿里云函数计算,一键驱动高效、灵活、成本优化的文件处理解决方案!
【8月更文挑战第2天】随着云计算的发展,高效灵活的多媒体处理成为必需。阿里云函数计算提供全托管服务,用户仅需上传代码,平台自动配置资源,支持毫秒级弹性伸缩。与对象存储服务集成,实现视频转码、音频提取及图片压缩等功能,按需付费降低成本。示例展示了基于Python的视频转码函数,体现其在多媒体处理领域的强大潜力和优势。
66 10
|
7月前
|
机器学习/深度学习 人工智能 弹性计算
|
7月前
|
存储 SQL 运维
MSSQL性能调优精要:索引深度优化、查询高效重构与并发精细控制
在MSSQL数据库的运维与优化领域,性能调优是一项复杂而细致的工作,直接关系到数据库的稳定性和响应速度
|
9月前
|
开发框架 网络安全 数据库
典型应用集成技术
【1月更文挑战第11天】典型应用集成技术。
50 0
|
机器学习/深度学习 存储 监控
转:排列组合算法在监控软件中的优势、复杂性与应用场景
排列组合算法在监控软件中可能用于处理一些组合与排列问题,例如处理多个元素的组合方式或排列顺序。它在一些特定场景下具有一定的优势和适用性,但也要注意其复杂性。
116 0