17 个库助你成为 React 达人🧙‍♂️🔮✨

2025-05-24

17 个库助你成为 React 达人🧙‍♂️🔮✨

React 正在变得越来越好,尤其是最新发布的 React 19。

今天,我们将深入探讨 17 个 React 库,它们将帮助你成为更高效的开发者,并助你实现 React 的神奇魔力!别忘了收藏这篇文章,并为这些优秀的开源项目点赞。

这个列表可能会让你感到惊讶,所以让我们开始成为 React 向导吧。

图片描述


1. CopilotKit——构建 AI Copilot 变得容易 10 倍。

副驾驶套件

 

您会同意在 React 中添加 AI 功能很困难,而这正是 Copilot 可以作为构建自定义 AI Copilot 的框架来帮助您的地方。

您可以使用 Copilotkit 提供的简单组件构建应用内 AI 聊天机器人和应用内 AI 代理,这比从头开始构建至少容易 10 倍。

如果已经有一个非常简单和快速的解决方案,你就不应该重新发明轮子!

他们还提供内置(完全可定制)的 Copilot 原生 UX 组件<CopilotKit /><CopilotPopup />、、、<CopilotSidebar /><CopilotTextarea />

成分

使用以下 npm 命令开始。

npm i @copilotkit/react-core @copilotkit/react-ui
Enter fullscreen mode Exit fullscreen mode

这就是您集成聊天机器人的方式。

所有与 CopilotKit 交互的组件都必须CopilotKit封装在内。建议您也从这里开始CopilotSidebar(以后可以切换到其他 UI 提供程序)。

"use client";
import { CopilotKit } from "@copilotkit/react-core";
import { CopilotSidebar } from "@copilotkit/react-ui";
import "@copilotkit/react-ui/styles.css"; 

export default function RootLayout({children}) {
  return (
    <CopilotKit url="/path_to_copilotkit_endpoint/see_below">
      <CopilotSidebar>
        {children}
      </CopilotSidebar>
    </CopilotKit>
  );
}
Enter fullscreen mode Exit fullscreen mode

您可以阅读文档并查看演示视频

您可以轻松集成 Vercel AI SDK、OpenAI API、Langchain 和其他 LLM 提供程序。您可以按照本指南将聊天机器人集成到您的应用程序中。

其基本思想是快速构建 AI 聊天机器人,且无需费力,尤其是基于 LLM 的应用程序。

您可以观看完整的演练!

CopilotKit 最近在 GitHub 上获得了 7000 多颗星,发布了 300 多个版本,这是一个重要的里程碑。

明星副驾驶套件

明星 CopilotKit ⭐️


2. Mantine Hooks - 用于状态和 UI 管理的反应钩子。

螳螂钩

 

你有多少次因为从零开始写 hooks 而卡住了?
好吧,有了 mantine hooks,我以后再也不用这么麻烦了!

编写更多代码效率不高,因为您最终需要维护它,所以最好使用这些生产级钩子来使您的工作变得更加轻松,而且每个钩子都有很多选项。

我们不应该比较项目,但这将是每个人都可以使用的最有用的项目,而不是从头开始编写代码。

相信我,获得 60 多个钩子是一件大事,因为他们有一种简单的方法可以让你看到每个钩子的演示,并且有易于遵循的文档。

使用以下 npm 命令开始。

npm install @mantine/hooks
Enter fullscreen mode Exit fullscreen mode

这就是您可以将其用作useScrollIntoView螳螂钩的一部分的方法。

import { useScrollIntoView } from '@mantine/hooks';
import { Button, Text, Group, Box } from '@mantine/core';

function Demo() {
  const { scrollIntoView, targetRef } = useScrollIntoView<HTMLDivElement>({
    offset: 60,
  });

  return (
    <Group justify="center">
      <Button
        onClick={() =>
          scrollIntoView({
            alignment: 'center',
          })
        }
      >
        Scroll to target
      </Button>
      <Box
        style={{
          width: '100%',
          height: '50vh',
          backgroundColor: 'var(--mantine-color-blue-light)',
        }}
      />
      <Text ref={targetRef}>Hello there</Text>
    </Group>
  );
}
Enter fullscreen mode Exit fullscreen mode

它们几乎囊括了所有功能,从本地存储到分页,再到滚动视图、交叉视图,甚至还有一些非常酷炫的实用工具,比如吸管和文本选择。这真是太实用了!

滴管

您可以阅读文档

他们在 GitHub 上有超过 24.5k+ 颗星,但这不仅仅是因为钩子,因为他们是 React 的组件库。

为了更好地了解情况,该软件包每周的下载量超过 34 万次,并且已经v7发布,这证明了其可信度。

星形螳螂鱼钩⭐️


3. React Email——使用 React 构建和发送电子邮件。

反应电子邮件

 

电子邮件或许是人们沟通最重要的媒介。然而,我们需要停止像2010年那样开发电子邮件,并重新思考2022年及以后的电子邮件应该如何发展。它应该根据我们今天构建Web应用的方式进行现代化改造。

您正在开发软件,并且希望使用代码发送电子邮件吗?您一定听说过 Resend(2023 年最热门的产品之一)。他们提供了一个使用 React 构建和发送电子邮件的简单解决方案。

一组高质量、无样式的组件,用于使用 React 和 TypeScript 创建精美的电子邮件。它通过支持暗黑模式减轻了编写响应式电子邮件的痛苦。它还能帮
解决Gmail、Outlook 和其他电子邮件客户端之间的不一致问题。

反应电子邮件

从以下 npm 命令开始,它会自动为您设置一切。

这将创建一个名为的新文件夹,react-email-starter其中包含一些您可以使用的电子邮件模板。

npx create-email@latest
Enter fullscreen mode Exit fullscreen mode

他们提供了一套标准组件,帮助您轻松创建精彩的电子邮件,无需从头开始创建布局。查看完整的可用组件列表

您可以使用此命令安装组件。如果您愿意,也可以安装单个组件。

npm install @react-email/components -E
Enter fullscreen mode Exit fullscreen mode

让我们看几个例子。

按钮组件。

import { Button } from "@react-email/components";

const Email = () => {
  return (
    <Button href="https://example.com" style={{ color: "#61dafb" }}>
      Click me
    </Button>
  );
};
Enter fullscreen mode Exit fullscreen mode

图像组件。

import { Img } from "@react-email/components";

const Email = () => {
  return <Img src="cat.jpg" alt="Cat" width="300" height="300" />;
};
Enter fullscreen mode Exit fullscreen mode

电子邮件客户端有这样的功能,preview text可以在你打开邮件之前预览邮件内容。你可以使用他们在文档中提供的预览组件来实现。

您可以阅读文档并查看使用 React Email 构建的开源模板(示例)列表。

示例

他们还记录了如何从另一个电子邮件框架切换到反应电子邮件

为了将 React Email 与任何电子邮件服务提供商一起使用,您需要将使用 React 创建的组件转换为 HTML 字符串。本文提供了大量的集成,并提供了一个清晰的示例,说明如何通过安装@babel/preset-typescript和添加.babelrc配置文件将 React Email 集成到您的 NodeJS 应用中。

React 电子邮件集成

它在 GitHub 上获得了 1.2 万颗星,目前有超过 7000 名开发者在使用。我非常喜欢他们让它变得如此简单易用。

星号反应电子邮件⭐️


4. React Player - 用于播放各种 URL 的 React 组件。

反应玩家

 

如果您希望在您的网站中添加视频,特别是嵌入来自 Vimeo 等其他网站的视频,那么这个组件可以让您的工作变得更加轻松。

一个简单的 React 组件,用于播放各种 URL,包括文件路径、YouTube、Facebook、Twitch、SoundCloud、Streamable、Vimeo、Wistia、Mixcloud、DailyMotion 和 Kaltura。您可以查看支持的媒体列表。

ReactPlayer 的维护工作由 Mux(一个流行的组织)接管,这使得他们的维护工作得以妥善进行。

使用以下 npm 命令开始。

npm install react-player
Enter fullscreen mode Exit fullscreen mode

这就是您可以使用它的方法。

import React from 'react'
import ReactPlayer from 'react-player'

// Render a YouTube video player
<ReactPlayer url='https://www.youtube.com/watch?v=LXb3EKWsInQ' />

// If you only ever use one type, use imports such as react-player/youtube to reduce your bundle size.

// like this: import ReactPlayer from 'react-player/youtube'
Enter fullscreen mode Exit fullscreen mode

您还可以使用react-player/lazy延迟加载您传入的 URL 的适当播放器。这会向您的输出添加几个 reactPlayer 块,但会减少主包的大小。

import React from 'react'
import ReactPlayer from 'react-player/lazy'

// Lazy load the YouTube player
<ReactPlayer url='https://www.youtube.com/watch?v=ysz5S6PUM-U' />
Enter fullscreen mode Exit fullscreen mode

您可以阅读文档并观看演示。它们提供了丰富的选项,包括添加字幕和轻松实现响应式布局。您可以使用包含丰富选项的演示来测试自定义 URL!

它们在 GitHub 上拥有 9k+ 颗星,被 149k+ 名开发人员使用,并且npm 包的每周下载量高达680k+。

明星 React 播放器⭐️


5. Replexica - 为 React 提供 AI 驱动的 i18n 工具包。

复形

 

本地化面临的困难确实存在,因此利用人工智能的帮助来解决这个问题是值得考虑的。

Replexica 是一个用于 React 的国际化工具包,用于快速交付多语言应用。它无需将文本提取到 JSON 文件中,并使用 AI 驱动的 API 进行内容处理。

Replexica 是一个平台,而非一个库。它就像拥有一支翻译和本地化工程师团队为您服务,却无需额外费用。您只需要一个 API 密钥,一切就绪!

一些令人兴奋的功能让这一切都值得。

✅ Replexica 会自动将您的应用翻译成多种语言。

✅ Replexica 确保翻译准确且符合上下文,适合用户界面,并且致力于比人类翻译得更好。

✅ Replexica 会在您添加新功能时保持您的应用本地化(更像是持续本地化)。

它包含以下两个部分:

  1. Replexica Compiler - React 的开源编译器插件。

  2. Replexica API - 云端的国际化 API,使用 LLM 执行翻译。(基于使用情况,提供免费套餐)

一些受支持的 i18n 格式包括:

  1. 不含 JSON 的 Replexica 编译器格式。
  2. Markdown 内容的 .md 文件。
  3. 传统的 JSON 和基于 YAML 的格式。

当他们达到500颗星时,他们还在DEV上发布了官方公告。我是第一批读者之一(回复不到3条)。
他们涵盖的内容很丰富,所以你应该读读Max的《我们得到了500颗星,下一步是什么》

为了让您大致了解 Replexica,以下是对基本 Next.js 应用程序进行多语言支持所需的唯一更改。

使用以下 npm 命令开始。

// install
pnpm add replexica @replexica/react @replexica/compiler

// login to Replexica API.
pnpm replexica auth --login
Enter fullscreen mode Exit fullscreen mode

这就是您可以使用它的方法。

// next.config.mjs

// Import Replexica Compiler
import replexica from '@replexica/compiler';

/** @type {import('next').NextConfig} */
const nextConfig = {};

// Define Replexica configuration
/** @type {import('@replexica/compiler').ReplexicaConfig} */
const replexicaConfig = {
  locale: {
    source: 'en',
    targets: ['es'],
  },
};

// Wrap Next.js config with Replexica Compiler
export default replexica.next(
  replexicaConfig,
  nextConfig,
);
Enter fullscreen mode Exit fullscreen mode

您可以阅读快速入门指南以及有关底层使用内容的清晰记录。

Replexica 编译器支持 Next.js 应用路由器,Replexica API 支持英语🇺🇸和西班牙语🇪🇸。他们计划接下来发布 Next.js 页面路由器 + 法语🇫🇷 语言支持!

他们在 GitHub 上拥有 950+ 颗星,并且基于 TypeScript 构建。这个项目能帮你节省很多时间!

星光复写纸⭐️


6. Victory——用于构建交互式数据可视化的 React 组件。

胜利

 

如今,许多开发者都在处理大量数据(主要使用 API)。因此,找到一种能够轻松可视化这些数据的方法是一个很棒的概念,能够将应用程序提升到一个新的水平。

Victory 是一个可组合 React 组件的生态系统,用于构建交互式数据可视化。

组件类型

使用以下 npm 命令开始。

npm i --save victory
Enter fullscreen mode Exit fullscreen mode

这就是您可以使用它的方法。

<VictoryChart
  domainPadding={{ x: 20 }}
>
  <VictoryHistogram
    style={{
      data: { fill: "#c43a31" }
    }}
    data={sampleHistogramDateData}
    bins={[
      new Date(2020, 1, 1),
      new Date(2020, 4, 1),
      new Date(2020, 8, 1),
      new Date(2020, 11, 1)
    ]}
  />
</VictoryChart>
Enter fullscreen mode Exit fullscreen mode

渲染效果如下。他们还提供动画和主题选项,总体来说挺实用的。

胜利图表

您可以阅读文档并按照教程开始使用。他们提供了大约 15 种不同的图表选项,并且每个选项下都有丰富的自定义功能,简直令人难以置信!

它也适用于React Native(文档),所以这是一个加分点。我还建议查看他们的常见问题解答,其中用代码和解释描述了一些常见问题的解决方案,例如样式、注释(标签)、轴的处理。

它即将发布v37,总体来说规模非常大(我没想到),哈哈!

该项目在 GitHub 上拥有 10.5k+ 个 Star,并被 GitHub 上的 24k+ 名开发人员使用。

星之胜利⭐️


7. Tremor——用于构建图表和仪表板的 React 组件。

样品组件

 

Tremor 提供了 20 多个开源 React 组件,用于构建基于 Tailwind CSS 的图表和仪表板,使数据可视化再次变得简单。

社区

使用以下 npm 命令开始。

npm i @tremor/react
Enter fullscreen mode Exit fullscreen mode

这就是您可以使用 Tremor 快速构建事物的方法。

import { Card, ProgressBar } from '@tremor/react';

export default function Example() {
  return (
    <Card className="mx-auto max-w-md">
      <h4 className="text-tremor-default text-tremor-content dark:text-dark-tremor-content">
        Sales
      </h4>
      <p className="text-tremor-metric font-semibold text-tremor-content-strong dark:text-dark-tremor-content-strong">
        $71,465
      </p>
      <p className="mt-4 flex items-center justify-between text-tremor-default text-tremor-content dark:text-dark-tremor-content">
        <span>32% of annual target</span>
        <span>$225,000</span>
      </p>
      <ProgressBar value={32} className="mt-2" />
    </Card>
  );
}
Enter fullscreen mode Exit fullscreen mode

这就是将要生成的输出。

输出

您可以阅读文档并查看组件列表。它们之间在底层使用了 remix 图标。

从我见过的各种组件来看,这是一个很好的起点。相信我!

成分

他们有一个震颤块的概念,可以让您访问 250 多个精心制作的块和每个模板,以更快地构建仪表板、应用程序和网站。

震颤阻滞

Tremor 还提供了简洁的 UI 工具包。太酷了!

UI工具包

Tremor 在 GitHub 上拥有 15.5k+ 颗星,被 GitHub 上的 8k+ 名开发人员使用,并且有超过 330 个版本,这意味着它在不断改进。

星震⭐️


8. React Slick – React 轮播组件。

反应灵巧

 

React Slick 是一个使用 React 构建的轮播组件。它是 Slick 轮播的 React 移植版。

大约两年前,我用一个 JS 库做了一个轮播组件,这真是个艰巨的任务,而且代码还达不到生产级水平。我宁愿用这个,也不愿用简单的库,甚至从零开始!

使用以下 npm 命令开始。

npm install react-slick --save
Enter fullscreen mode Exit fullscreen mode

这就是您可以使用自定义分页的方式。

import React, { Component } from "react";
import Slider from "react-slick";
import { baseUrl } from "./config";

function CustomPaging() {
  const settings = {
    customPaging: function(i) {
      return (
        <a>
          <img src={`${baseUrl}/abstract0${i + 1}.jpg`} />
        </a>
      );
    },
    dots: true,
    dotsClass: "slick-dots slick-thumb",
    infinite: true,
    speed: 500,
    slidesToShow: 1,
    slidesToScroll: 1
  };
  return (
    <div className="slider-container">
      <Slider {...settings}>
        <div>
          <img src={baseUrl + "/abstract01.jpg"} />
        </div>
        <div>
          <img src={baseUrl + "/abstract02.jpg"} />
        </div>
        <div>
          <img src={baseUrl + "/abstract03.jpg"} />
        </div>
        <div>
          <img src={baseUrl + "/abstract04.jpg"} />
        </div>
      </Slider>
    </div>
  );
}

export default CustomPaging;

Enter fullscreen mode Exit fullscreen mode

自定义分页

您可以阅读有关可用的道具选项方法。

您可以阅读文档以及包含完整代码和输出的所有示例。这会让工作变得轻松很多,对吧?

示例

它们在 GitHub 上拥有 11.5k+ 颗星,并被 GitHub 上 400k+ 的开发人员使用。

明星反应光滑⭐️


9. React Content Loader——由 SVG 驱动的组件,可轻松创建骨架加载。

反应内容加载器

 

我访问网站时,发现没什么可展示的。我知道它正在加载,因为我是开发者。但不是每个人都能加载,所以他们甚至不知道发生了什么。

这就是为什么骨架加载器很重要,特别是对于加载状态。

该项目为您提供了一个由 SVG 驱动的组件,可轻松创建占位符加载(如 Facebook 的卡片加载)。

骨架图通常用于在加载过程中提示用户内容仍在加载。每个开发者都应该使用这个便捷的项目来提升应用的整体用户体验。

有几件事让这个变得更好!

✅ 轻量级 - 小于 2kB 且 Web 版本无依赖关系

✅ 随意更改颜色、速度、尺寸甚至 RTL。

✅ 它支持 React Native,具有通用 API 和强大的功能。

使用以下 npm 命令开始。

npm i react-content-loader --save
Enter fullscreen mode Exit fullscreen mode

您可以这样使用它。

import React from "react"
import ContentLoader from "react-content-loader"

const MyLoader = (props) => (
  <ContentLoader 
    speed={2}
    width={400}
    height={160}
    viewBox="0 0 400 160"
    backgroundColor="#f3f3f3"
    foregroundColor="#ecebeb"
    {...props}
  >
    <rect x="48" y="8" rx="3" ry="3" width="88" height="6" /> 
    <rect x="48" y="26" rx="3" ry="3" width="52" height="6" /> 
    <rect x="0" y="56" rx="3" ry="3" width="410" height="6" /> 
    <rect x="0" y="72" rx="3" ry="3" width="380" height="6" /> 
    <rect x="0" y="88" rx="3" ry="3" width="178" height="6" /> 
    <circle cx="20" cy="20" r="20" />
  </ContentLoader>
)

export default MyLoader
Enter fullscreen mode Exit fullscreen mode

其输出如下所示。

输出

您甚至可以拖动单个骨架或使用为 Facebook 和 Instagram 等不同社交媒体预定义的骨架。

您可以阅读文档并查看演示

演示示例

该项目在 GitHub 上拥有 13.4k+ 个 Star,并被 GitHub 上的 47k+ 名开发人员使用。

星型 React 内容加载器 ⭐️


10. React Hot Toast——超热门的 React 通知。

反应热吐司

 

几乎每个 React 开发人员都听说过这个,可见它是多么的出名!

我之所以仍然包括它,是因为它提供了出色的默认体验和简单的自定义选项。

✅ 它利用 Promise API 实现自动加载器,确保平稳过渡。

✅ 此外,它重量轻,大小不到 5kb,并且仍然易于访问,同时为具有无头钩子的开发人员提供选项useToaster()

首先将 Toaster 添加到您的应用中。它将负责渲染所有已发出的通知。现在您可以toast()从任何地方触发它!

使用以下 npm 命令开始。

npm install react-hot-toast
Enter fullscreen mode Exit fullscreen mode

使用起来就是这么简单。

import toast, { Toaster } from 'react-hot-toast';

const notify = () => toast('Here is your toast.');

const App = () => {
  return (
    <div>
      <button onClick={notify}>Make me a toast</button>
      <Toaster />
    </div>
  );
};
Enter fullscreen mode Exit fullscreen mode

主题选项

主题选项

他们有很多选项可以自定义,但useToaster()钩子提供了一个无头系统,可以帮你管理通知状态。这使得构建通知系统变得更加容易。

您可以阅读文档样式指南并查看演示

该项目在 GitHub 上拥有 9.3k+ 颗星,GitHub 上有 29 万多名开发者在使用。它简单易用,而且效果非常好!

星反应热吐司⭐️


11. aHooks——高质量、可靠的 React Hooks 库。

钩子

 

这是另一个方便的钩子库,与我们之前讨论过的类似。我之所以把它包含进来,是因为它在开发者中很受欢迎。

ahooks 是一套易于使用且可靠的 React Hooks 库。它使用 TypeScript 编写,具有可预测的静态类型。据我所知,它有大约 50 多个 Hooks!

✅ 包含大量从业务场景提炼的高级 Hook。✅
支持 SSR 和函数特殊处理,避免闭包问题。

使用以下 npm 命令开始。

$ npm install --save ahooks
Enter fullscreen mode Exit fullscreen mode

例如,您可以使用useLocalStorageState它来存储数据。您甚至不需要了解本地存储就可以使用此钩子。阅读更多关于此钩子提供的选项。

import React from 'react';
import { useLocalStorageState } from 'ahooks';

export default function () {
  const [message, setMessage] = useLocalStorageState<string | undefined>(
    'use-local-storage-state-demo1',
    {
      defaultValue: 'Hello~',
    },
  );

  return (
    <>
      <input
        value={message || ''}
        placeholder="Please enter some words..."
        onChange={(e) => setMessage(e.target.value)}
      />
      <button style={{ margin: '0 8px' }} type="button" onClick={() => setMessage('Hello~')}>
        Reset
      </button>
      <button type="button" onClick={() => setMessage(undefined)}>
        Clear
      </button>
    </>
  );
}
Enter fullscreen mode Exit fullscreen mode

查看钩子的完整列表。在每个钩子中,您可以获得可用于自定义的代码沙盒链接、示例、代码、道具和参数。

它们提供丰富的选项,涵盖 Web 套接字、DOM、事件、效果,甚至还有一些高级功能,例如 useIsomorphicLayoutEffect 和 useMemoizedFn。总的来说,它非常方便,尤其是因为最终维护的代码更少。

您可以阅读快速入门指南并在codesandbox上实时检查

如果您正在寻找替代方案,请尝试以下方法:

我知道,我发现了很多这样的方法,但现在尝试只使用一个,以避免混淆并掌握它!

它在 GitHub 上拥有 13.5k 颗星,并被 GitHub 上 20k+ 名开发人员使用。

星形钩子⭐️


12. cmdk – 快速、无样式的命令菜单 React 组件。

命令

 

这是一个 React 命令菜单组件,也可以用作可访问的组合框。您可以渲染项目,它会自动过滤和排序。⌘K(项目名称)支持完全可组合的 API,因此您可以将项目包装在其他组件中,甚至可以将其包装为静态 JSX。

使用以下 npm 命令开始。

pnpm install cmdk
Enter fullscreen mode Exit fullscreen mode

这就是您通常的使用方法。

import { Command } from 'cmdk'

const CommandMenu = () => {
  return (
    <Command label="Command Menu">
      <Command.Input />
      <Command.List>
        <Command.Empty>No results found.</Command.Empty>

        <Command.Group heading="Letters">
          <Command.Item>a</Command.Item>
          <Command.Item>b</Command.Item>
          <Command.Separator />
          <Command.Item>c</Command.Item>
        </Command.Group>

        <Command.Item>Apple</Command.Item>
      </Command.List>
    </Command>
  )
}
Enter fullscreen mode Exit fullscreen mode

您可以阅读有关零件和样式的文档

您可以了解如何根据您想要的样式进行更改。

光线投射

光线投射

 

线性

线性

 

韦尔塞尔

韦尔塞尔

 

框架者

框架者

 

您应该看到所有示例常见问题解答的列表,其中回答了很多重要的问题。

它在 GitHub 上有近 9k 个星,并且是一个非常新的项目(提交次数少于 130 次)。

星号 cmdk ⭐️


13. React JSONSchema Form——用于从 JSON Schema 构建 Web 表单。

React JSONForm 模式

 

react-jsonschema-form自动从 JSON Schema 生成 React 表单,使其成为仅使用 JSON Schema 为任何数据生成表单的理想选择。它提供 uiSchema 等自定义选项,让您可以定制表单的外观,超越默认主题。

使用以下 npm 命令开始。

npm install @rjsf/core @rjsf/utils @rjsf/validator-ajv8 --save
Enter fullscreen mode Exit fullscreen mode

这就是您可以使用它的方法。

import { RJSFSchema } from '@rjsf/utils';
import validator from '@rjsf/validator-ajv8';

const schema: RJSFSchema = {
  title: 'Todo',
  type: 'object',
  required: ['title'],
  properties: {
    title: { type: 'string', title: 'Title', default: 'A new task' },
    done: { type: 'boolean', title: 'Done?', default: false },
  },
};

const log = (type) => console.log.bind(console, type);

render(
  <Form
    schema={schema}
    validator={validator}
    onChange={log('changed')}
    onSubmit={log('submitted')}
    onError={log('errors')}
  />,
  document.getElementById('app')
);
Enter fullscreen mode Exit fullscreen mode

它们提供高级自定义选项,包括自定义小部件。

您可以阅读文档并检查现场游乐场

它在 GitHub 上拥有超过 13000 个 Star,并有超过 5000 名开发者在使用。目前,他们已经发布v5了 190 多个版本,持续改进中。

Star React JSONSchema 表单⭐️


14. React DND – 用于 React 的拖放功能。

反应 dnd

 

我还没有完全实现拖放功能,但我经常发现自己对选择哪个选项感到困惑。

拖放

我目前只介绍 React DND。我遇到的另一个选择是interactjs.io,根据我读过的文档,它似乎非常有用。由于他们提供了详细的示例,使用起来相当简单。

使用以下 npm 命令开始。

npm install react-dnd react-dnd-html5-backend
Enter fullscreen mode Exit fullscreen mode

除非您正在编写自定义的,否则您可能希望使用 React DnD 附带的 HTML5 后端。

这是安装方法react-dnd-html5-backend。阅读文档

这是起点。

import { HTML5Backend } from 'react-dnd-html5-backend'
import { DndProvider } from 'react-dnd'

export default class YourApp {
  render() {
    return (
      <DndProvider backend={HTML5Backend}>
        /* Your Drag-and-Drop Application */
      </DndProvider>
    )
  }
}
Enter fullscreen mode Exit fullscreen mode

这样您就可以非常轻松地实现卡片的拖放功能。

// Let's make <Card text='Write the docs' /> draggable!

import React from 'react'
import { useDrag } from 'react-dnd'
import { ItemTypes } from './Constants'

export default function Card({ isDragging, text }) {
  const [{ opacity }, dragRef] = useDrag(
    () => ({
      type: ItemTypes.CARD,
      item: { text },
      collect: (monitor) => ({
        opacity: monitor.isDragging() ? 0.5 : 1
      })
    }),
    []
  )
  return (
    <div ref={dragRef} style={{ opacity }}>
      {text}
    </div>
  )
}
Enter fullscreen mode Exit fullscreen mode

请注意,HTML5 后端不支持触摸事件。因此它无法在平板电脑和移动设备上运行。您可以使用适用react-dnd-touch-backend于触摸设备的。阅读文档

import { TouchBackend } from 'react-dnd-touch-backend'
import { DndProvider } from 'react-dnd'

class YourApp {
  <DndProvider backend={TouchBackend} options={opts}>
    {/* Your application */}
  </DndProvider>
}
Enter fullscreen mode Exit fullscreen mode

这个代码沙箱规定了我们如何正确使用 React DND。

您可以查看React DND 的示例。

他们甚至有一个干净的功能,您可以使用 Redux 检查内部发生的情况。

您可以通过向提供程序添加 debugModeprop 并将其值为 true来启用Redux DevTools 。

<DndProvider debugMode={true} backend={HTML5Backend}>
Enter fullscreen mode Exit fullscreen mode

它提供了丰富的组件选项,我需要亲自测试一下。总的来说,它看起来相当不错,尤其是对于刚入门的人来说。

React DND 已获得许可MIT,在 GitHub 上拥有超过 20k+ 颗星,并且在 GitHub 上被 232k+ 开发人员使用,这使其成为完美的选择。

星反应 DND ⭐️


15. Google Map React – 用于反应的 Google 地图库。

地图

 

它提供了google-map-react一个基于一小组Google Maps API编写的组件。

✅ 它允许您在 Google 地图上呈现任何 React 组件。

✅ 它是完全同构的,可以在服务器上渲染。

✅ 即使未加载 Google Maps API,它也可以在浏览器中呈现地图组件。

✅ 它使用内部可调整的悬停算法,基本上地图上的每个对象都可以悬停。

它允许您创建类似本例的界面。您可以滚动表格、缩放/移动地图、悬停/点击标记,甚至点击表格行。

我见过很多开发人员只是添加它而没有进行太多的定制,这导致了糟糕的用户体验。

使用以下 npm 命令开始。

npm install --save google-map-react
Enter fullscreen mode Exit fullscreen mode

这就是您可以使用它的方法。

import React from "react";
import GoogleMapReact from 'google-map-react';

const AnyReactComponent = ({ text }) => <div>{text}</div>;

export default function SimpleMap(){
  const defaultProps = {
    center: {
      lat: 10.99835602,
      lng: 77.01502627
    },
    zoom: 11
  };

  return (
    // Important! Always set the container height explicitly
    <div style={{ height: '100vh', width: '100%' }}>
      <GoogleMapReact
        bootstrapURLKeys={{ key: "" }}
        defaultCenter={defaultProps.center}
        defaultZoom={defaultProps.zoom}
      >
        <AnyReactComponent
          lat={59.955413}
          lng={30.337844}
          text="My Marker"
        />
      </GoogleMapReact>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

确保容器元素具有宽度和高度。地图会尝试填充父容器,但如果容器没有指定大小,地图将折叠为 0 宽/高(这是添加 Google 地图的通用规则)。

您可以阅读详细的文档10 多个示例

它在 GitHub 上拥有 6k+ 颗星,并被 GitHub 上的 71k+ 开发人员使用。

星标 Google 地图 React ⭐️


16. React Diagrams——一个用 React 编写的超级简单、实用的图表库。

反应图

 

内容

使用以下 npm 命令开始运行。然后,您将看到一个 dist 文件夹,其中包含所有已压缩且可用于生产环境的代码。

yarn add @projectstorm/react-diagrams
Enter fullscreen mode Exit fullscreen mode

让我们看看如何使用它。

import createEngine, { 
    DefaultLinkModel, 
    DefaultNodeModel,
    DiagramModel 
} from '@projectstorm/react-diagrams';

import {
    CanvasWidget
} from '@projectstorm/react-canvas-core';
Enter fullscreen mode Exit fullscreen mode

我们需要调用createEngine它将为我们引导一个包含所有默认设置的 DiagramEngine。

// create an instance of the engine with all the defaults
const engine = createEngine();

// creating two nodes
// node 1
const node1 = new DefaultNodeModel({
    name: 'Node 1',
    color: 'rgb(0,192,255)',
});
node1.setPosition(100, 100);
let port1 = node1.addOutPort('Out');

// node 2
const node2 = new DefaultNodeModel({
    name: 'Node 1',
    color: 'rgb(0,192,255)',
});
node2.setPosition(100, 100);
let port2 = node2.addOutPort('Out');

//we link the two ports of both of the nodes
// also add a label to the link
const link = port1.link<DefaultLinkModel>(port2);
link.addLabel('Hello World!');
Enter fullscreen mode Exit fullscreen mode

现在我们已经设置好了一个简单的图表。
剩下要做的就是创建一个 DiagramModel 来包含所有内容,添加所有元素,然后将其添加到引擎中。

const model = new DiagramModel();
model.addAll(node1, node2, link);
engine.setModel(model);

// we just need to render in react
<CanvasWidget engine={engine} />
Enter fullscreen mode Exit fullscreen mode

您可以阅读文档并查看现场演示

现场演示

这个库的灵感是 Joint JS(一个很棒的库)+ 丰富的 HTML 节点的需求 + LabView + Blender Composite 子系统。

如果您感兴趣,可以阅读如何进行端到端测试,但大多数开源项目都经过了充分测试,因此您无需过多担心。您还可以阅读如何创建自定义节点自定义端口

它在 GitHub 上有 8k+ 颗星,并且是使用 TypeScript 构建的。

星型反应图⭐️


17. Refine——面向企业的开源 Retool。

精炼

 

Refine 是一个元 React 框架,可以快速开发各种 Web 应用程序。

精炼

从内部工具到管理面板、B2B 应用程序和仪表板,它是构建任何类型的 CRUD 应用程序(例如 DevOps 仪表板、电子商务平台或 CRM 解决方案)的综合解决方案。

电子商务

只需不到一分钟,即可使用单个 CLI 命令进行设置。
它拥有 15 多个后端服务的连接器,包括 Hasura、Appwrite 等。

您可以看到可用的集成列表。

整合

但最好的部分是 Refine 是headless by design,从而提供无限的样式和自定义选项。

由于其架构,您可以使用流行的 CSS 框架(如 Tailwind CSS)或从头开始创建自己的样式。

这是最好的部分,因为我们不想因为与特定库的兼容性而受到样式的限制,因为每个人都有自己的风格并使用不同的 UI。

使用以下 npm 命令开始。

npm create refine-app@latest
Enter fullscreen mode Exit fullscreen mode

使用 Refine 添加登录就是这么简单。

import { useLogin } from "@refinedev/core";
const { login } = useLogin();
Enter fullscreen mode Exit fullscreen mode

使用 Refine 概览代码库的结构。

const App = () => (
  <Refine
    dataProvider={dataProvider}
    resources={[
      {
        name: "blog_posts",
        list: "/blog-posts",
        show: "/blog-posts/show/:id",
        create: "/blog-posts/create",
        edit: "/blog-posts/edit/:id",
      },
    ]}
  >
    /* ... */
  </Refine>
);
Enter fullscreen mode Exit fullscreen mode

您可以阅读文档

您可以看到使用 Refine 构建的一些示例应用程序:

他们甚至提供模板,这也是为什么这么多用户喜欢 Refine 的原因。
您可以查看模板

模板

我当时想了解更多关于他们的事情,结果偶然发现了他们的博客,里面有一些不错的文章。我最喜欢的是 React admin 与 Refine 的对比!

博客

它们在 GitHub 上拥有大约 25k+ 颗星,并被 GitHub 上的 1.5k+ 名开发人员使用。

星炼⭐️


我认为提高生产力是一种选择,而你(作为开发人员)应该为你的用例找到更好的解决方案。

请告诉我您最喜欢上述哪个图书馆。

祝您拥有美好的一天!下次再见。

如果您喜欢这类东西,
请关注我以获取更多信息:)
用户名为 Anmol_Codes 的 Twitter 个人资料 用户名为 Anmol-Baranwal 的 GitHub 个人资料 LinkedIn 个人资料,用户名为 Anmol-Baranwal

关注 Copilotkit 以获取更多类似内容。

文章来源:https://dev.to/copilotkit/17-libraries-to-become-a-react-wizard-1g6k
PREV
您今天可以构建的 20 多个简单的 AI 项目(LangChain、Cop​​ilotKit 等)
NEXT
17 个标志性项目助您打造个人作品集 💼 🚀🦾