2023年提升您React项目的五个库

一、React Query

https://github.com/TanStack/query

10余年的芗城网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整芗城建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“芗城网站设计”,“芗城网站推广”以来,每个客户项目都认真落实执行。

图3

简而言之,React Query 可以使在 React 中获取数据体验更好。其是一个处理异步服务器状态的状态管理库,通过提供了一个异步函数来获取数据。此外,useQuery hook提供了一堆有用的实用程序来处理异步函数:

  • 加载标志
  • 结果缓存
  • 结果失效和重新获取

这些特性对大型项目具有较大价值。一般情况下,项目中需要在全局共享获取结果、在数据更改时刷新这些结果、触发获取数据等等。使用 React Query 时,很多情况都不需要自己再进行处理。缓存意味着您可以在应用程序的任何位置调用useQuery hook,并且数据在所有出现的位置之间共享。

二、Zustand

https://github.com/pmndrs/zustand

图片1

在React开发的程序中肯定会涉及到组件间状态共享,我们可以通过props来实现,但是这并不利于代码的维护,后来React提供了Context Providers来进行组件间状态共享,但是对于复杂的全局存储,Context可能会变的很繁琐,有可能导致性能问题。为了更好的使用Context,可以使用Zustand,其提供了一个极其简单的API来创建一个store,可以从应用程序的任何位置访问该store并读取和写入值。

三、Framer Motion

https://github.com/framer/motion

图5

动画是赋予React应用程序现代和精致感的最佳方式之一。但这并不容易。使用CSS动画很棘手,可能会导致大量的代码。相比之下,Framer Motion提供了一个强大但简单的API来创建自定义动画。它与React生态系统原生集成,配有一组hooks和组件。例如,将圆形平滑的变换为正方形:

import { motion } from "framer-motion"

export const MyComponent = () => (
  
)

数组中的每个值代表相应属性的一个关键帧。然后动画会循环播放。当然,您可以做的不仅仅是使用 Framer Motion 定义关键帧。还可以动画化布局的更改、处理手势或根据滚动进行动画。

四、Class Variance Authority(CVA)

https://github.com/joe-bell/cva

图片2

TailwindCSS已迅速成为为React应用程序添加样式的主要方式。但使用它构建可重用的UI元素可能是一项挑战。例如,使用Tailwind创建了自定义样式按钮,该按钮会有多种样式,所以需要根据props值将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,
    VariantProps {}
export const Button: React.FC = ({
  className,
  intent,
  size,
  ...props
}) => 

以声明方式描述每个参数值的按钮样式,利用CVA 会找出正确的样式组合。我们甚至可以指定默认变量使某些属性成为可选的。

五、Radix UI

https://github.com/radix-ui/primitives

图片

如果您喜欢构建完全自定义样式的界面,但不想处理从头开始开发可访问 UI 组件的复杂问题,那么 Radix UI 适合您。该库附带了各种常用的 UI 组件。例如对话框、复选框和下拉菜单。

虽然组件包含所有逻辑和交互,但它们没有任何样式。这意味着完全可以自己控制组件的样式。这使能够构建一个与其它网站不同的真正定制的UI系统。在拥有完全控制样式的同时,Radix为您完成所有其他工作。所有组件都是完全可访问的,可以通过键盘导航等方式进行操作。

如果您喜欢Radix的灵活性,但不想从头开始设计所有样式,那么shadcn/ui就是您应该查看的内容。它是一个完全模块化的组件库,构建在Radix和Tailwind之上。可以将代码直接复制到项目中并按照自己的喜好进行修改,而不是安装NPM包。

参考文章:https://livecycle.io/blogs/react-libraries/

当前题目:2023年提升您React项目的五个库
当前网址:http://www.hantingmc.com/qtweb/news29/67679.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联