赞
踩
编者注:本教程最后更新于 2022 年 12 月 23 日,以反映 TanStack Table v8 中包含的更新。
作为最流行的组织复杂数据的方式之一,表格 UI 在 Web 产品中非常常见。然而,从头开始构建表格 UI 可能是一项艰巨的任务,如何在 iPhone 上禁用 WhatsApp 聊天备份尤其是 React 以让开发人员头疼而闻名。
幸运的是,有各种各样的工具和库可以让创建 React 表的体验变得更简单、更有价值,最著名的是TanStack Table,如何在 WhatsApp 上更改照片上传质量以前称为 React Table。
在本教程中,我们将向您展示如何构建具有基本排序和搜索功能的智能 React 数据表 UI。在撰写本文时,如何在 iPhone 上编辑人像模式照片TanStack Table v8 的迁移指南尚不可用。因此,我们将使用最新稳定版本的 React Table,v7。
我们将详细介绍以下内容:
何时在 React 中使用表格
什么是反应表?如何从 Apple Watch 中喷水反应表 v7TanStack 表 v8何时使用反应表什么时候不使用 React TableReact 表的用例
反应表 UI 功能
React 表 UI 中的常见 UX 挑战
何时在 React 中构建自己的表格 UI
React Table 示例:构建 ReactTable组件使用 Axios 调用 API将 React Table 添加到您的应用程序React Table 中的自定义样式
添加搜索功能useFilters
添加排序useSortBy
TanStack 表入门
从 React Table v7 迁移到 TanStack Table v8
反应表替代品
React 中表 UI 的一些常见用例包括显示财务报告、如何在 iPhone 上查看保存的密码如何在 iPhone 上为联系人设置自定义铃声体育排行榜以及定价和比较页面的数据,仅举几例:
一些广泛使用表格的产品包括 Airtable、Asana List View、Asana Timeline、Google Sheets 和 Notion Table。如何将两个 AirPods 连接到一个 iPhone、iPad 或 MacBook一些使用 React Table 的科技巨头包括谷歌、苹果和微软。
React Table是 React 中使用最广泛的表库之一。如何在 iPhone 上使用鼠标在撰写本文时,它在 GitHub 上拥有超过 20,000 颗星,接收频繁更新,并支持 Hooks。React Table 库非常轻量级,提供了简单表格所需的所有基本功能。
2020 年 3 月,如何在 iPhone 和 Android 上的 Snapchat 上启用暗模式React Table 的创建者 Tanner Linsley 发布了React Table v7,他将其描述为“将整个库重构为仅 Hooks UI/Style/Markup 不可知表构建实用程序的一年多工作的结晶。”
React Table v7 由一系列 React Hooks 和插件组成,如何在 iPhone 和 iPad 上的 Safari 上请求桌面站点旨在帮助您将复杂数据网格的逻辑特征组合成一个单一的、高性能的、可扩展的、不受约束的 API,由主 Hook 返回useTable。
作为无头实用程序,React Table 不会开箱即用地呈现或提供数据表 UI 元素。如何在 iPhone 上安排 WhatsApp 消息因此,您有责任使用 React Table 挂钩的状态和回调来呈现您自己的表格标记。
2022 年 7 月 1 日,Tanner 宣布发布TanStack table,如何从 Apple CarPlay 中删除消息通知它对 React Table v7 进行了重大升级。
TanStack Table v8 旨在比 v7 具有更高的性能和更丰富的功能,支持其他 Web 框架,如 Vue、Solid 和 Svelte。在本文后面,我们将看到从 React Table v7 进行的潜在迁移可能是什么样子。
当您的表格 UI 需要以下任何一项时,如何在 iPhone 上自定义 Gboard 和更改主题您应该考虑使用 React Table:
排序、过滤和分页等基本功能
在不影响功能的情况下为表格定制 UI 设计
易于扩展;您可以使用自定义插件 Hooks 在 React Table 之上构建您自己的功能
当你有以下任一需求时,如何在 iPhone 上使用两个 WhatsApp 帐户你应该考虑使用另一个 React 数据表库:
默认支持固定标题和列
对触摸和非触摸设备的水平和垂直滚动的开箱即用支持。
React Table 不决定 UI;如何在 iPad 上使用 Safari 扩展它是无头的。因此,根据我们的需要定义 UI 是我们的责任。
尽管我们可以在 React Table 中实现对内联编辑列的支持,如何在 iPhone 上共享笔记但这超出了我们的表的范围。我们需要在 React Table 之上创建一个插件或组件来支持这些功能。React Table 名副其实,最适合渲染简单的表格。
在性能方面,React Table 无法处理无限长的表格,例如 Google Sheet。React Table 适用于中型表,但不适用于长表。
最终,您应该考虑将 React Table 用于需要基本功能(如搜索、排序、过滤等)如何在 iPhone 上更改单个应用程序的文本大小的简单表格。一些很好的例子可能包括带有统计信息的体育排行榜或带有自定义元素的财务数据表。
在本教程中,我们将演示如何使用 React Table 构建一个简单的 Airtable 克隆。但首先,让我们快速回顾一下功能齐全的 React Table UI 的特性,如何使用 iPhone 扫描文档并将其添加到 Mac并讨论与在 React 中构建数据表相关的一些常见挑战。
React 数据表 UI 的如何在 iPhone 上编辑共享表一些基本功能包括:
不折不扣的用户体验和用户界面:表格用户界面内清晰易懂的排版和自定义元素
远程数据调用加载数据
搜索表或特定列
基本过滤和排序选项
React 数据表 UI 中的高级功能可能包括:
基于数据类型(如数字、字符串、布尔值、选择输入等)的列的自定义排序和过滤选项。
无限长表格的分页支持
显示和隐藏列
支持列数据的内联编辑
支持通过模态或详情面板编辑整行数据
固定标题和固定列以轻松查看数据
支持多种类型的设备;响应能力
可调整大小的列以容纳列内的长数据点,即多行注释
水平和垂直滚动支持
可展开的行以显示有关该行的完整数据
在 UI 方面,数据表是以有组织的方式显示复杂数据的最佳选择之一。如何从 Truecaller 取消列出您的电话号码但是,在用户体验方面,表格很棘手,当您支持多种设备时,它们很容易失控。
例如,如果不更改布局以适应较小的屏幕尺寸,如何阻止消息中的电子邮件地址就很难使表格具有响应性。此外,表格可能需要双向滚动。默认浏览器滚动条适用于全宽表格,但大多数表格都是自定义宽度的。如何使用和不使用 WiFi 从 iPhone 进行打印自定义滚动条很难同时支持触摸屏和非触摸屏。
根据数据长度管理列的宽度很棘手。当我们在表中加载动态数据时,我们经常会遇到 UX 故障。每次数据更改时,列宽都会调整大小,如何在 iPhone 上的照片应用程序中使用扩展从而导致对齐故障。在设计我们的用户体验时,我们需要小心处理这些问题。
在以下情况下,如何在 iPhone 和 iPad 上锁定笔记您需要考虑构建自己的 React 表 UI:
当你的桌子只是一个没有太多互动的展示柜时
当您需要表的自定义 UI 时
当你需要你的桌子非常轻便但没有任何功能时
以下是在 React 中构建自己的表格的一些常见用例:
带有比较表的产品和营销页面
定价表
具有自定义样式的简单表格,除了简单的弹出文本外,不需要对列进行很多交互
足够的理论;让我们深入研究一个真实的例子。如何在 Apple iPad 上设置家长控制为了演示如何Table在 React Table 中创建组件,我们将构建一个具有排序和搜索等基本功能的简单表格 UI。这是我们将要使用的React Table 示例。
首先,使用 Create React App 创建一个新的 React 应用程序:
npx create-react-app react-table-demo
snow对于我们的应用程序,如何在 iPhone 上编辑图像 EXIF 数据我们将使用 Axios 通过来自TVMAZE API的搜索词来检索电影信息。以下是此操作的端点:
https://api.tvmaze.com/search/shows?q=snow
要调用 API,让我们安装 Axios:
npm install axios
# OR
yarn add axios
接下来,如何在 iPhone 上设置和使用紧急求救功能用下面的代码替换文件的内容:default arc/App.js
// App.js
import axios from "axios";
import { useState, useEffect } from "react";
import Table from "./Table";
import "./App.css";
function App() {
// data state to store the TV Maze API data. Its initial value is an empty array
const [data, setData] = useState([]);
// Using useEffect to call the API once mounted and set the data
useEffect(() => {
(async () => {
const result = await axios("https://api.tvmaze.com/search/shows?q=snow");
setData(result.data);
})();
}, []);
return <div className="App"></div>;
}
export default App;
上面,我们创建了一个名为 的状态data。如何在 iPhone 上合并重复的联系人挂载组件后,我们使用 Axios 从 TVMAZE API 获取电影内容并将返回的结果设置为data.
使用以下命令添加反应表:
npm install react-table
# OR
yarn add react-table
React Table 使用 React Hooks。如何将 Apple 照片库与 Google 相册同步它有一个名为 Hook 的主表useTable,以及一个用于添加插件 Hooks 的插件系统。因此,React Table 很容易根据我们的自定义需求进行扩展。
让我们使用useTableHook 创建我们的基本 UI。如何在 iPhone 和 Mac 上重置屏幕时间数据接下来,我们将创建一个新Table组件,它将接受两个 propsdata和columns。propdata是我们通过 API 调用获得的数据,如何在 iPhone、iPad 和 Mac 上将 Keynote 文件转换为视频columns是定义表格列、标题、行、行的显示方式等的对象。我们很快就会在代码中看到它:
在该文件夹中,如何在 Snapchat 中玩游戏创建一个新文件并粘贴以下代码:/srcTable.js
// Table.js
export default function Table({ columns, data }) {
// Table component logic and UI come here
}
让我们修改其中的内容以包含表格的列并呈现组件:App.jsTable
// App.js
import axios from "axios";
import React, { useMemo, useState, useEffect } from "react";
import Table from "./Table";
import "./App.css";
function App() {
/*
- Columns is a simple array right now, but it will contain some logic later on. It is recommended by react-table to memoize the columns data
- Here in this example, we have grouped our columns into two headers. react-table is flexible enough to create grouped table headers
*/
const columns = useMemo(
() => [
{
// first group - TV Show
Header: "TV Show",
// First group columns
columns: [
{
Header: "Name",
accessor: "show.name",
},
{
Header: "Type",
accessor: "show.type",
},
],
},
{
// Second group - Details
Header: "Details",
// Second group columns
columns: [
{
Header: "Language",
accessor: "show.language",
},
{
Header: "Genre(s)",
accessor: "show.genres",
},
{
Header: "Runtime",
accessor: "show.runtime",
},
{
Header: "Status",
accessor: "show.status",
},
],
},
],
[]
);
// data state to store the TV Maze API data. Its initial value is an empty array
const [data, setData] = useState([]);
// Using useEffect to call the API once mounted and set the data
useEffect(() => {
(async () => {
const result = await axios("https://api.tvmaze.com/search/shows?q=snow");
setData(result.data);
})();
}, []);
return (
<div className="App">
<Table columns={columns} data={data} />
</div>
);
}
export default App;
在上面的代码中,我们使用useMemoHook创建了一个列的记忆数组;如何在 iPhone 上旋转视频我们定义了两个级别的标题,如何在 iPhone 上修复 AirDrop 转换视频每个级别的标题都有不同的列。
我们已将所有列设置为具有访问器,如何在 iPhone、iPad 和 Mac 上隐藏应用程序购买历史记录即 TVMAZE API 返回的数据设置为data。因为我们的数据包含show在数组中的对象中,所以我们所有的访问器都以show:
// sample data array looks like this
[
{
"score": 17.592657,
"show": {
"id": 44813,
"url": "http://www.tvmaze.com/shows/44813/the-snow-spider",
"name": "The Snow Spider",
"type": "Scripted",
"language": "English",
"genres": [
"Drama",
"Fantasy"
],
"status": "In Development",
"runtime": 30,
"premiered": null,
"officialSite": null,
"schedule": {
"time": "",
"days": [
]
}
...
},
{
// next TV show
}
...
]
现在,如何更改与 Apple ID 关联的电话号码让我们完成我们的Table组件:
// Table.js
import React from "react";
import { useTable } from "react-table";
export default function Table({ columns, data }) {
// Use the useTable Hook to send the columns and data to build the table
const {
getTableProps, // table props from react-table
getTableBodyProps, // table body props from react-table
headerGroups, // headerGroups, if your table has groupings
rows, // rows for the table based on the data passed
prepareRow // Prepare the row (this function needs to be called for each row before getting the row props)
} = useTable({
columns,
data
});
/*
Render the UI for your table
- react-table doesn't have UI, it's headless. We just need to put the react-table props from the Hooks, and it will do its magic automatically
*/
return (
<table {...getTableProps()}>
<thead>
{headerGroups.map(headerGroup => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map(column => (
<th {...column.getHeaderProps()}>{column.render("Header")}</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{rows.map((row, i) => {
prepareRow(row);
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return <td {...cell.getCellProps()}>{cell.render("Cell")}</td>;
})}
</tr>
);
})}
</tbody>
</table>
);
}
上面,我们通过columns和data到useTable。如何关闭 iPhone 中的自动大写HookuseTable将为表、正文和转换后的数据返回必要的属性,以创建标题和单元格。表头将通过迭代生成headerGroups,如何在 iPhone 上将 WhatsApp 音频设置为铃声表体的行将通过循环生成rows:
{rows.map((row, i) => {
prepareRow(row); // This line is necessary to prepare the rows and get the row props from react-table dynamically
// Each row can be rendered directly as a string using the react-table render method
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return <td {...cell.getCellProps()}>{cell.render("Cell")}</td>;
})}
</tr>
);
})}
您还会注意到 genre 是一个数组,如何在 WhatsApp 上以 GIF 格式发送实时照片但它会在我们的最终输出中自动转换为以逗号分隔的字符串。
如果我们此时运行我们的应用程序,如何在 iPhone 和 Mac 上的 Keynote 中循环播放幻灯片我们应该得到以下输出:
这个表对于大多数应用程序来说已经足够了,如何在 Android 和 iPhone 上从 Google Photos 打印图片但是如果我们需要自定义样式呢?使用 React Table,您可以为每个单元格定义自定义样式;可以在column对象中定义样式,如何在 iPhone 和 Mac 上的 PowerPoint 中使背景透明如下所示。例如,让我们制作一个类似徽章的自定义组件来显示每个流派:
// App.js
import React, { useMemo } from "react";
...
// Custom component to render Genres
const Genres = ({ values }) => {
// Loop through the array and create a badge-like component instead of a comma-separated string
return (
<>
{values.map((genre, idx) => {
return (
<span key={idx} className="badge">
{genre}
</span>
);
})}
</>
);
};
function App() {
const columns = useMemo(
() => [
...
{
Header: "Details",
columns: [
{
Header: "Language",
accessor: "show.language"
},
{
Header: "Genre(s)",
accessor: "show.genres",
// Cell method will provide the cell value; we pass it to render a custom component
Cell: ({ cell: { value } }) => <Genres values={value} />
},
{
Header: "Runtime",
accessor: "show.runtime",
// Cell method will provide the value of the cell; we can create a custom element for the Cell
Cell: ({ cell: { value } }) => {
const hour = Math.floor(value / 60);
const min = Math.floor(value % 60);
return (
<>
{hour > 0 ? `${hour} hr${hour > 1 ? "s" : ""} ` : ""}
{min > 0 ? `${min} min${min > 1 ? "s" : ""}` : ""}
</>
);
}
},
{
Header: "Status",
accessor: "show.status"
}
]
}
],
[]
);
. . .
}
. . .
我们Genres通过迭代并将其值发送到自定义组件来更新上面的列,创建一个类似徽章的元素。我们还更改了运行时间列,如何在 iPhone 和 Mac 上的 Pages 应用程序中更改背景颜色以根据时间显示手表的小时和分钟。执行此步骤后,我们的表格 UI 应如下所示:
我们已经了解了如何根据需要为每个单元格自定义样式;您可以根据数据值显示每个单元格的任何自定义元素。
让我们为表格添加更多功能。如何在 Android Auto 和 Apple Carplay 上截屏React Table 的演示页面已经提供了创建自定义智能表格所需的一切。演示中只缺少一件事,即全局搜索功能。如何在 Mac、iPhone 和 iPad 上的 Safari 中使用标签组useFilters我决定使用 React Table 的插件 Hook创建它。
首先,让我们创建一个搜索输入:Table.js
// Table.js
// Create a state
const [filterInput, setFilterInput] = useState("");
// Update the state when input changes
const handleFilterChange = e => {
const value = e.target.value || undefined;
setFilterInput(value);
};
// Input element
<input
value={filterInput}
onChange={handleFilterChange}
placeholder={"Search name"}
/>
管理输入状态是一种直接、简单的状态。如何清除 Mac、iPhone 和 iPad 版 Safari 中的缓存和 Cookie但是,我们如何将这个过滤值传递给我们的表并过滤表行呢?
为此,React Table 有一个很好的 Hook 插件,叫做useFilters:
// Table.js
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
setFilter, // The useFilter Hook provides a way to set the filter
} = useTable(
{
columns,
data,
},
useFilters // Adding the useFilters Hook to the table
// You can add as many Hooks as you want. Check the documentation for details. You can even add custom Hooks for react-table here
);
在我们的示例中,我们将仅为Name列设置过滤器。如何在 Apple 日历应用程序中添加和删除假期要过滤名称,当输入值更改时,我们需要将第一个参数设置为列访问器或 ID 值,将第二个参数设置为搜索过滤器值。
让我们更新我们的handleFilterChange功能:
const handleFilterChange = e => {
const value = e.target.value || undefined;
setFilter("show.name", value); // Update the show.name filter. Now our table will filter and show only the rows which have a matching value
setFilterInput(value);
};
搜索实现后,我们的 UI 将如下所示:
这是过滤器的一个非常基本的示例,如何在 Apple Numbers App 中添加音频文件React Table API 提供了几个选项。请务必查看API 文档。
让我们为我们的表实现一个更基本的功能,排序。让我们允许对所有列进行排序;它非常简单,类似于过滤。
我们需要添加一个名为 Hook 的插件useSortBy,如何在 iPhone、iPad 和 Mac 上启用杜比全景声并创建样式以在表格中显示排序图标。它会自动处理升序和降序的排序:
// Table.js
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
setFilter
} = useTable(
{
columns,
data
},
useFilters,
useSortBy // This plugin Hook will help to sort our table columns
);
// Table header styling and props to allow sorting
<th
{...column.getHeaderProps(column.getSortByToggleProps())}
className={
column.isSorted
? column.isSortedDesc
? "sort-desc"
: "sort-asc"
: ""
}
>
{column.render("Header")}
</th>
基于排序,我们添加类名或. 我们还将排序道具添加到列标题:sort-descsort-asc
{...column.getHeaderProps(column.getSortByToggleProps())}
这将自动允许对所有列进行排序。如何创建自定义 Apple Watch 表盘您可以通过使用disableSortBy列上的选项禁用特定列中的排序来控制它。在我们的示例中,我们允许对所有列进行排序。如何在 iPhone、iPad 和 Mac 上的 iMovie 中添加主题配乐随意试用演示。
在我们的排序实现之后,UI 如下所示:
当然,您可以进一步扩展此演示。如何在 iPhone 和 Mac 上的 Adobe Acrobat Reader 中签署 PDF如果您需要帮助,请在评论部分告诉我。扩展它的一些想法包括:
使用全局过滤器过滤多列(提示:使用setAllFilters而不是setFilter)
创建分页并调用更多数据为表格加载
sortby通过禁用列允许仅对特定字段进行排序
不是将硬编码的搜索值传递给 TVMAZE API,而是创建一个输入来直接搜索 TVMAZE API。例如,删除客户端过滤并在服务器端添加电视节目搜索功能
要扩展此演示,请查看 React Table 的扩展示例页面。如何在 iPhone、iPad 和 Mac 上的 Apple Mail 应用程序中添加签名它有一个非常好的厨房水槽可供使用,并为大多数用例提供了解决方案。
正如本文开头提到的如何在 Apple Pages App 中添加页码,TanStack Table 是 React Table 的重大进步,使该库能够支持更多的 JavaScript 框架,包括 Svelte、Solid 和 Vue。TanStack 表包括对 TypeScript 的完全重写、如何在 iCloud+ 上设置和使用隐藏我的电子邮件对服务器端操作的改进支持以及大幅扩展和改进的 API 等。
此外,由于其设计,如何在 iPhone、iPad 和 Mac 上的 Pages 应用程序中添加水印TanStack Table 实现在许多受支持的框架中是一致的,这意味着在 React 中创建表所需的 Hooks 与在 Svelte 应用程序中创建表所用的 Hooks 相同。因此,对于已经熟悉 React Table 的人来说,更容易在其他框架中使用它。
与 React Table v7 不同如何在 iPhone、iPad 和 Mac 上的 Keynote 讲演中更改幻灯片大小,您可以使用以下代码安装 TanStack Table:
npm install @tanstack/react-table
然后,我们可以将它导入到我们的应用程序中,如下所示:
import { useReactTable } from '@tanstack/react-table'
function App() {
const table = useReactTable(options)
. . .
}
列配置是使用 TanStack Table 和 React Table v7 之间最显着的区别。如何强制向联系人发送短信而不是 iMessage在 v8 中,createColumnHelperHook 添加了一种用于创建列的新方法。在下面的示例中,我们将使用 TanStack Table v8 如何在 Android 和 iPhone 上将 Wi-Fi 设置为按流量计费的连接重新创建我们之前的表示例中的列:
import { createColumnHelper } from "@tanstack/react-table";
const columnHelper = createColumnHelper();
const columns = [
columnHelper.group({
id: "tv-show",
header: "TV Show",
columns: [
columnHelper.accessor("show.name", {
header: () => "Name",
}),
columnHelper.accessor("show.type", {
header: () => "Type",
}),
],
}),
columnHelper.group({
header: "Details",
columns: [
columnHelper.accessor("show.language", {
header: () => "Language",
}),
columnHelper.accessor("show.genres", {
header: () => "Genre(s)",
}),
],
// . . .
}),
];
此外,v8 中的表选项与 v7 中的大部分相同,如何从 iPhone 上的 iCloud 存储中删除 WhatsApp 备份但一些较大的差异集中在可选的状态管理和数据管道控制方面。您可以在文档页面上找到有关其他实现的更多信息。
尽管 React Table 是最流行的 React 表库,如何在 iPhone 上显示 Apple Move 圆环但它并不总是在 React 中构建表的最佳解决方案。根据您的特定项目和用例,有很多替代方案也可能满足您的需求。
下面是一些值得一试的替代 React 表库。
react-data-grid用于创建智能表。如何在 iPhone、iPad 和 Mac 上的 Safari 中添加书签文件夹在撰写本文时,它拥有超过 5,000 个 GitHub 星并且维护良好。
当你的数据表需要时使用 react-data-grid:
分组列、排序、搜索和过滤等基本功能
列的内联编辑
列内的下拉列表(如 Google 表格)或列内的任何自定义输入元素
支持扩展列以显示更多数据
对性能进行微调,即支持无限长表格行的虚拟渲染
没有行时支持空状态
react-data-grid 几乎涵盖了数据表的所有基本需求。如何在没有第三方应用程序的情况下在 iPhone 上编辑 PDF但是默认是不支持分页的,所以如果你的表格需要分页,需要手动实现和处理。默认情况下,react-data-grid 支持更长的表 UI 并针对性能进行了优化,因此除非用户体验需要,否则可能不需要分页。
react-data-grid 还使用 Bootstrap 进行样式设置。如何在 Apple Pages 中插入和自定义列表你仍然可以在没有它的情况下使用 react-data-grid,但是你必须为表格添加你自己的样式。与允许您创建表结构的 React Table 相比,它不容易定制。在 react-data-grid 中,库创建了表 UI,因此它不适合 UI 密集的自定义页面。
虽然以上几点并不是缺点,如何在Apple Health中设置服药提醒但在您开始使用 react-data-grid 之前了解它们是很好的。最终,当您的应用程序需要一个具有良好 UX 的迷你可编辑数据表(类似于 Google Sheets 或 Airtable)时,如何在 iPhone 和 Mac 上的 iMessage 中编辑和取消发送消息react-data-grid 是最佳选择。
react-datasheet类似于 react-data-grid。如何修复 iCloud 和 iMessage 帐户在 iPhone 上不匹配错误它拥有大约 5,000 个 GitHub 星,也是一个维护良好的库。
react-datasheet 主要侧重于帮助您创建自己的类似 Google 表格的应用程序。它具有内置的基本功能,如何在谷歌地图中保存和查找您的停车位置可以创建此类重度用户体验的应用程序。同样,它可能不适合创建带有表格的通用页面 UI。
然而,与 react-data-grid 不同,react-datasheet 并未针对大型数据集进行优化,因此将其用于需要类似工作表功能的小型应用程序。如何在 iPhone 上的邮件应用程序中安排电子邮件它只有一个用例,与 react-data-grid 相比,它的功能非常有限。
顾名思义,当数据集很大时,如何从 iPhone 上的图像中删除背景react-virtualized会针对性能进行大量优化。在撰写本文时,它在 GitHub 上拥有超过 24k 颗星。这个图书馆不完全是一个表格图书馆;它做得更多。如何在 iPhone 上下载和播放 Google Drive 视频它专门用于在 UI 上以不同格式(如网格、表格和列表)显示大型数据集。
当您的数据集非常大时,渲染性能是表格的关键指标;如果是这种情况,请进行反应虚拟化。对于正常的用例,这个库会有点矫枉过正,如何在 iPhone 和 iPad 上的视频中使用实时文本而且 API 也太高级了。
您应该将 react-virtualized 用于自定义时间线、如何在 iPhone 上对实时文本使用快速操作涉及无限长日历的图表以及用于大型数据集的大量 UI 元素。
对于数据有限、自定义样式和最小交互性(如排序和过滤)的简单页面,请使用 React Table。要使用有限的数据构建类似 Google 表格的迷你应用程序,如何更改 Android 和 iPhone 上的 DNS 服务器请使用 react-data-grid 或 react-datasheet。对于具有大型数据集的 Google Sheets 或类似 Airtable 的应用程序,请使用 react-data-grid。
当您处理非常大的数据集并且需要提供表格、网格和更多选项的自定义 UI 时,请选择 react-virtualized。
添加排序后,这就是最终的React Table 演示的样子。如何在 iPhone 上查看已保存的 Wi-Fi 密码您可以试用演示并查看我们的React Table 示例的代码库。
在本文中,我们学习了如何使用 React 构建表格 UI。为基本用例创建自己的表并不难,但请确保您没有尽可能地重新发明轮子。希望您喜欢学习表格 UI。请在评论中告诉我您使用表格的经验。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。