Rives
(更|多高质量内|容:java567 点 c0m)
如是说
掌控 React 的基本知识很关键。实际上,无须大批附加的库,您就能获得十分大的丰硕成果。但有许多此基础辅助工具能将您的 React 合作开发新体验提高到两个捷伊水准。那些库化解了
她们列举了四个她们指出您如果介绍的这类库。
为何这很关键
共享合作开发辅助工具并负面影响合作开发者新体验十分关键。当合作开发者能采用恰当的辅助工具和天然资源时,她们能花更多的天数展开构筑和缔造,而增加感到恐惧、开支和磨难的天数。
这是为何她们常常在找寻管用的工程项目来撷取,这也是为何我们前段时间面世了她们的开放源码辅助工具“Preevy”,github:/livecycle/preevy。
合作开发者采用 Preevy 随心所欲建立可共享天然资源的自动更新自然环境,并更快地与她们就新一代更动展开协同。
你能看一看Preevy并给她们遗留下两颗月亮吗?它的确协助她们竭尽全力向开放源码街道社区重大贡献管用的辅助工具和文本。
十分感谢❤️❤️❤️!
那时,她们的如是说早已完结,让她们早已开始介绍那些辅助工具的文章文本。
Zopfli
TanStack React 查阅
github:/TanStack/query
加载标志结果缓存这听起来没那么严重。但它对大型代码库的负面影响不可低估。通并且数据在所有事件之间共享天然资源。
健康)状况
github:/pmndrs/zustand
每个 React 合作开发者都知道在应用程序中共享天然资源状态所涉及的痛苦。当第一次遇到这个问题时,您不可避免地会在组件树上“钻取”数据。不用说,这不会产生干净的代码,从长远来看也是不可持续的。
值得庆幸的是,React 提出了Context 提供者来化解这个问题。如果您需要做的只是在组件树中传递许多值,那么上下文就十分管用。但对于更复杂的全球商店来说,它可能会变得很麻烦。两者都是因为合作开发者需要小心性能负面影响,而且许多合作开发者不太喜欢它的 API。
如果您想从 Context 展开设置,Zustand 是您的最佳选择。它提供了两个极其简单的 API,可让您建立具有值和函数的商店。然后,您能从应用程序中的任何位置访问该存储以读取和写入值。包括反应性!如果您想在存储中存储嵌套对象数据,请考虑采用Immer和 Zustand 来随心所欲更动嵌套状态。
成帧器运动
github:/framer/motion
动画是给你的 React 应用程序带来现代和精致感觉的最佳方式之一。但这并不容易。采用 CSS 动画很棘手,并且可能会产生大批代码。相比之下,Framer Motion 提供了强大但简单的 API 来建立自定义动画。它通过一组钩子和组件原生集成到 React 生态系统中。
例如,以下代码是平滑地动画从圆形到正方形的转换所需的全部文本:
import { motion } from “framer-motion” export const MyComponent = () =>( <motion.div animate={{ scale: [1, 2, 2, 1, 1], rotate: [0, 0, 270, 270, 0],e borderRadius: [“20%”, “20%”, “50%”, “50%”, “20%”], }} /> )数组中的每个值代表相应属性的两个关键帧。然后动画会循环播放。当然,您能做的不仅仅是采用 Framer Motion 定义关键帧。您还可以对布局中的更动展开动画处理、处理手势或基于滚动展开动画处理。
类别差异管理局 (CVA)
github:/joe-bell/cva
TailwindCSS 已迅速成为 React 应用程序样式的主要方式。但用它构筑可重用的 UI 元素可能是两个挑战。假设您采用 Tailwind 建立她们的自定义样式按钮。由于您想在整个应用程序中重用它,因此您建立了两个组件。但那时您需要该组件的多个变体。主要风格和次要风格。所以那时您需要根据 prop 值将 Tailwind 类组合在一起。那时您还需要不同颜色和不同尺寸的按钮。因此,添加许多 props 甚至更多条件逻辑来找出 Tailwind 类的恰当组合。这很快就会让人沮丧。
输入 CVA,是 Class Variance Authority 的缩写。这是两个简单的库,能消除采用 Tailwind 类名构筑可组合 React 组件的痛苦,以她们的文档为例:
import React from “react”;\ import { cva, type VariantProps } from “class-variance-authority”;****\ const button = cva(“button”, {\ variants: {\ intent: {\ primary: [\ “bg-blue-500”,\ “text-white”,\ “border-transparent”,\ “hover:bg-blue-600”,\ ],\ secondary: [\ “bg-white”,\ “text-gray-800”,\ “border-gray-400”,\ “hover:bg-gray-100”,\ ],\ },\ size: {\ small: \[“text-sm”, “py-1”, “px-2”],\ medium: \[“text-base”, “py-2”, “px-4”],\ },\ },\ compoundVariants: \[{ intent: “primary”, size: “medium”, class: “uppercase” }],\ defaultVariants: {\ intent: “primary”,\ size: “medium”,\ },\ }); export interface ButtonProps\ extends React.ButtonHTMLAttributes<HTMLButtonElement>,\ VariantProps<typeof button> {}****\ export const Button: React.FC<ButtonProps> = ({\ className,\ intent,\ size,\ …props\ }) => <button className={button({ intent, size, className })} {…props} />;她们以声明方式描述每个参数值的按钮样式。然后,CVA 会找出恰当的样式组合。她们甚至能指定默认变体以使某些属性成为可选的。
基数用户界面
github:/radix-ui/primitives
如果您喜欢构筑完全自定义样式的界面,但不想处理从头早已开始合作开发高保真可访问 UI 组件的复杂问题,Radix UI 适合您。该库附带了各种常用的 UI 组件。例如对话框、复选框和下拉菜单。但有两个转折。
虽然组件包含所有逻辑和交互性,但它们的样式为零。这意味着您能完全控制她们设计组件的样式。这使您能构筑两个真正的自定义 UI 系统,该系统与其他网站不同。在完全控制样式的同时,Radix 会为您完成所有其他工作。所有组件都能完全访问 – 例如通过键盘导航。
如果您喜欢 Radix 的灵活性,但又不想从头早已开始设计所有文本,那么您如果检查一下shadcn/ui 。它是两个构筑在 Radix 和 Tailwind 之上的完全模块化的组件库。您能将代码直接复制到您的工程项目中并根据您的喜好展开修改,而不是安装 NPM 包。
包起来
本文讨论的库能协助您将 React 应用程序提高到两个捷伊水准。采用它们将协助您的应用程序为用户和合作开发者提供更快的新体验。您能在工程项目中逐步采用所有那些方法,而不是展开一项重大更动。而且它们上手非常简单。因此,在早已开始编码之前无须花费数小时来研究文档。
希望您觉得这有协助!
(更|多高质量内|容:java567 点 c0m)