React-Query源码探秘 1-架构分析

1,247 阅读2分钟

专栏目录: 全网最细 React-Query源码探秘 - 不月阳九的专栏 - 掘金 (juejin.cn)

前言

大家好这里是阳九 一个坚持"万物皆可手写"理念的初级码农

最近React-Query的使用率越来越高,公司也开始准备将其使用在项目中, 本着用了就要搞懂的原则,我抽空去扒了扒它的源码,在这里给大家进行一个讲解

React-Query:一个集合了网络请求和状态管理的工具

我们可以使用useQuery钩子 发起请求,然后将请求来的数据缓存,其他组件想使用数据时,就可以直接从缓存中拿取,减少网络请求。

可以简单的理解为 axios+Redux的简易组合版本,大大减少了请求相关的代码量.

具体的使用大家可以自行去官网查看- react-query.tanstack.com

本专栏适合

  1. 使用过React-Querry的前端同学
  2. 对Promise,观察者模式,面向对象比较熟悉的同学

如果以上两点大家觉得还不熟,或者你只是一个纯纯初学者,可以先去补一补前置知识,当然这些都不难,相信一年经验的同学都能轻松搞定

架构分析

React-Query的架构总体分为四大部分

QueryClient, QueryCache, Query, QueryObserver

  1. 当我们初始化React项目时,会先全局生成一个QueryClient,用于提供封装好的请求方法,并使用React.context分享给App下所有的组件
  2. QueryClient上会挂载一个QueryCache,用来保存和管理所有的Query
  3. Query用于保存管理数据和请求状态,每个请求回来的数据都会new一个Query并保存在上面
  4. 每个useQuery钩子,都会给组件创建一个QueryObserver,用于监听Query中数据的变化,通知组件进行更新

React-Query主体结构图

image.png

QueryObserver通过组件观察Query示意图

image.png

接下来我们会分篇来详细讲解React-Query的执行流程