TanStack——为现代前端开发提供高性能和灵活的工具
TanStack 是一个由社区主导的开源项目集合,专注于为现代前端开发提供高性能和灵活的工具。它包括多个流行的 JavaScript 和 TypeScript 库,主要用于处理表格、查询、虚拟化、状态管理等功能。
文章目录
- 1、TanStack Query:
- 1.1 useQuery:用于获取和缓存异步数据。自动处理数据的加载状态、错误状态和刷新。
- 1.2 useMutation:用于处理数据的创建、更新或删除操作。它不会缓存结果,而是主要用于触发变化。
- 1.3 useQueryClient:提供对全局 `QueryClient` 实例的访问,常用于手动操作缓存(如刷新、预取或更新数据)。
- 1.4 QueryClient:TanStack Query 的核心实例,用于管理全局缓存和配置。应在应用入口处创建一次,并通过 `QueryClientProvider` 提供给应用。
- 1.5 QueryClientProvider:提供 `QueryClient` 实例给 React 应用,使得所有子组件可以使用 TanStack Query 的功能。
- 2、TanStack Virtual
- 3、 TanStack Table:
- 4、TanStack Router是一个强大的路由库,提供灵活、声明式的路由配置。
- 5、TanStack Form
https://tanstack.com/query/latest
1、TanStack Query:
(以前叫 React Query)是一个用于数据获取、缓存、同步和更新的库,专注于处理异步数据流。
1.1 useQuery:用于获取和缓存异步数据。自动处理数据的加载状态、错误状态和刷新。
- 特性:缓存数据、自动刷新、分页和懒加载、错误处理
import { useQuery } from '@tanstack/react-query';function fetchData() {return fetch('https://jsonplaceholder.typicode.com/posts').then((res) => res.json());
}function Posts() {const { data, isLoading, error } = useQuery(['posts'], fetchData);if (isLoading) return <div>Loading...</div>;if (error) return <div>Error: {error.message}</div>;return (<ul>{data.map((post) => (<li key={post.id}>{post.title}</li>))}</ul>);
}
1.2 useMutation:用于处理数据的创建、更新或删除操作。它不会缓存结果,而是主要用于触发变化。
- 特性:触发式操作、内置状态管理、与缓存结合
import { useMutation, useQueryClient } from '@tanstack/react-query';function App() {const queryClient = useQueryClient();const mutation = useMutation((newPost) => fetch('/api/posts', {method: 'POST',body: JSON.stringify(newPost),}),{onSuccess: () => {// 在成功后刷新缓存queryClient.invalidateQueries(['posts']);},});const handleAddPost = () => {mutation.mutate({ title: 'New Post' });};return (<button onClick={handleAddPost}>{mutation.isLoading ? 'Adding...' : 'Add Post'}</button>);
}
1.3 useQueryClient:提供对全局 QueryClient 实例的访问,常用于手动操作缓存(如刷新、预取或更新数据)。
- 手动缓存控制:
1.4 QueryClient:TanStack Query 的核心实例,用于管理全局缓存和配置。应在应用入口处创建一次,并通过 QueryClientProvider 提供给应用。
1.5 QueryClientProvider:提供 QueryClient 实例给 React 应用,使得所有子组件可以使用 TanStack Query 的功能。
2、TanStack Virtual
是一个虚拟化解决方案,适用于处理大型数据集的渲染优化,比如长列表或滚动视
import { useVirtualizer } from '@tanstack/react-virtual';function VirtualizedList({ items }) {const parentRef = React.useRef();const rowVirtualizer = useVirtualizer({count: items.length,getScrollElement: () => parentRef.current,estimateSize: () => 35,});return (<div ref={parentRef} style={{ height: 300, overflow: 'auto' }}><divstyle={{height: `${rowVirtualizer.getTotalSize()}px`,position: 'relative',}}>{rowVirtualizer.getVirtualItems().map((virtualRow) => (<divkey={virtualRow.index}style={{position: 'absolute',top: 0,left: 0,transform: `translateY(${virtualRow.start}px)`,}}>{items[virtualRow.index]}</div>))}</div></div>);
}
3、 TanStack Table:
一个表格管理库,用于构建动态、高性能、可扩展的表格 UI。
import { useTable } from '@tanstack/react-table';const data = [{ name: 'Alice', age: 25 },{ name: 'Bob', age: 30 },
];const columns = [{header: 'Name',accessorKey: 'name',},{header: 'Age',accessorKey: 'age',},
];function App() {const table = useTable({ data, columns });return (<table><thead>{table.getHeaderGroups().map((headerGroup) => (<tr key={headerGroup.id}>{headerGroup.headers.map((header) => (<th key={header.id}>{header.renderHeader()}</th>))}</tr>))}</thead><tbody>{table.getRowModel().rows.map((row) => (<tr key={row.id}>{row.getVisibleCells().map((cell) => (<td key={cell.id}>{cell.renderCell()}</td>))}</tr>))}</tbody></table>);
}
4、TanStack Router是一个强大的路由库,提供灵活、声明式的路由配置。
5、TanStack Form
相关文章:
TanStack——为现代前端开发提供高性能和灵活的工具
TanStack 是一个由社区主导的开源项目集合,专注于为现代前端开发提供高性能和灵活的工具。它包括多个流行的 JavaScript 和 TypeScript 库,主要用于处理表格、查询、虚拟化、状态管理等功能。 文章目录 1、TanStack Query:1.1 useQuery&#…...
Java爬虫️ 使用Jsoup库进行API请求有什么优势?
在Java的世界里,Jsoup库以其强大的HTML解析能力而闻名。它不仅仅是一个简单的解析器,更是一个功能齐全的工具箱,为开发者提供了从网页抓取到数据处理的一站式解决方案。本文将深入探讨使用Jsoup库进行API请求的优势,并提供代码示例…...
React源码02 - 基础知识 React API 一览
1. JSX到JavaScript的转换 <div id"div" key"key"><span>1</span><span>2</span> </div>React.createElement("div", // 大写开头会当做原生dom标签的字符串,而组件使用大写开头时,这…...
COMSOL with Matlab
文章目录 基本介绍COMSOL with MatlabCOMSOL主Matlab辅Matlab为主Comsol为辅 操作步骤常用指令mphopenmphgeommghmeshmphmeshstatsmphnavigatormphplot常用指令mphsavemphlaunchModelUtil.clear 实例教学自动另存新档**把语法套用到边界条件**把语法套用到另存新档 函数及其微分…...
【报表查询】.NET开源ORM框架 SqlSugar 系列
文章目录 前言实践一、按月统计没有为0实践二、 统计某月每天的数量实践三、对象和表随意JOIN实践四、 List<int>和表随意JOIN实践五、大数据处理实践六、每10分钟统计Count实践七、 每个ID都要对应时间总结 前言 在我们实际开发场景中,报表是最常见的功能&a…...
PostgreSQL数据库访问限制详解
pg_hba.conf 文件是 PostgreSQL 数据库系统中非常重要的一个配置文件,它用于定义哪些用户(或客户端)可以连接到 PostgreSQL 数据库服务器,以及他们可以使用哪些认证方法进行连接。 pg_hba.conf 的名称来源于 "Host-Based Aut…...
【test linux】创建一个ext4类型的文件系统
创建一个ext4类型的文件系统 dd 是一个非常强大的命令行工具,用于在Unix/Linux系统中进行低级别的数据复制和转换。这条命令的具体参数含义如下: if/dev/zero:指定输入文件(input file)为 /dev/zero,这是一…...
如何在繁忙的生活中找到自己的节奏?
目录 一、理解生活节奏的重要性 二、分析当前生活节奏 1. 时间分配 2. 心理状态 3. 身体状况 4. 生活习惯 1. 快慢适中 2. 张弛结合 3. 与目标相符 三、掌握调整生活节奏的策略 1. 设定优先级 2. 合理规划时间 3. 学会拒绝与取舍 4. 保持健康的生活方式 5. 留出…...
AI-PR曲线
PR曲线 人工智能里面的一个小概念。 2.3 性能度量(查全率,查准率,F1,PR曲线与ROC曲线) 预测出来的是一个概率,不能根据概率来说它是正类还是负类,要有一个阈值。 查准率(Precision&…...
Guava 提供了集合操作 `List`、`Set` 和 `Map` 三个工具类
入门示例 guava 最佳实践 学习指南 以下是使用Google Guava库中的工具方法来创建和操作List、Set、Map集合的一些示例: List相关操作 创建List 使用Lists.newArrayList()创建一个新的可变ArrayList实例。List<Integer> list Lists.newArrayList(1, 2, 3);/…...
深入解析 Elasticsearch 集群配置文件参数
在自建 Elasticsearch 集群时,我们需要通过 elasticsearch.yml 文件对节点角色、网络设置、集群发现和数据存储路径等进行灵活配置。配置项的合理设置对集群的稳定性、性能与扩展性影响深远。本文将以一个示例配置文件为蓝本,逐条解析各参数的含义与建议…...
WebMvcConfigurer和WebMvcConfigurationSupport(MVC配置)
一:基本介绍 WebMvcConfigurer是接口,用于配置全局的SpringMVC的相关属性,采用JAVABean的方式来代替传统的XML配置文件,提供了跨域设置、静态资源处理器、类型转化器、自定义拦截器、页面跳转等能力。 WebMvcConfigurationSupport是webmvc的…...
用 javascript 来回答宇宙外面是什么
宇宙外面是什么呢? 估计这个问题要困扰很多人, 让我们用一段 javascript 代码来回答一下. 一, 从一段代码说起 var 地球 {名字 : "地球",女友 : "月亮",外面 : {名字 : "太阳系",老大 : "太阳",老二 : {名字 : "木星",二…...
我的性能优化经验
专业方向:App cpu/memory/gpu/流畅度/响应时间的优化,Anr,Framework CarPowerManagementService模块的(STR),从0~1完成性能监控体系搭建,完成3大版本迭代高质量性能交付 响应时间: …...
XSLT 编辑 XML
XSLT 编辑 XML 介绍 XSLT(可扩展样式表语言转换)是一种用于转换XML文档的语言。它允许开发人员将XML数据转换为其他格式,如HTML、PDF或纯文本。XSLT通过使用XPath查询来定位XML文档中的元素,并对这些元素应用转换规则。在本教程…...
数智读书笔记系列010 生命3.0:人工智能时代 人类的进化与重生
书名:生命3.0 生命3.0:人工智能时代,人类的进化与重生 著者:[美]迈克斯•泰格马克 迈克斯・泰格马克 教育背景与职业 教育背景:迈克斯・泰格马克毕业于麻省理工学院,获物理学博士学位。职业经…...
Transfomer的各层矩阵
一、输入 输入一句话:Hello CYZLAB the inspired world 每个单词为一个token 二、Embedding 这里的词向量维度为6,矩阵的行数为token数,列数是词向量的维度 这列是注释不算hello122694CYZLAB222372the222596inspired132440world431273 …...
代码随想录第51天
99.岛屿数量 深搜 import java.util.*;class Main{static int[][] directions {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};static boolean[][] visited;public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();int m sc.nextInt();int…...
基础库httpx的使用
urllib 库和 requests 库的使用,已经可以爬取绝大多数网站的数据,但对于某些网站依然无能为力。什么情况?这些网站强制使用HTTP/2.0协议访问,这时 urllib 和requests 是无法爬取数据的,因为它们只支持 HTTP/1.1,不支持…...
c++中如何保持结构体的线程安全?3D坐标的线程安全:从理论到最优解
使用mutex的困扰 struct Point3d {std::mutex mtx;double x, y, z;void set(double nx, double ny, double nz) {std::lock_guard<std::mutex> lock(mtx);x nx; y ny; z nz;} };这种方案虽然安全,但性能开销确实不小。每次访问都需要加锁解锁,…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
