在现代应用程序中,开发人员会遇到很多情况,其中项目列表(例如待办事项、订单、发票等)必须以表格格式或画廊格式呈现。React 提供了清晰、直观和简单的技术来创建基于列表的用户界面。React 使用两个现有的特性来实现这个特性。
- JavaScript 的内置 map 方法。
- jsx 中的 React 表达式。
Map 方法
map 函数接受集合和映射函数。映射功能将应用于集合中的每个项目,结果用于生成新列表。
例如,声明一个包含 5 个随机数的 JavaScript 数组,如下所示 -
现在,应用一个匿名函数,该函数将其输入加倍,如下所示 -
然后,结果列表是 -
为了刷新 React 表达式,让我们创建一个新变量并分配一个 React 元素。
现在,React 表达式 你好 将与 final 合并并生成,
例
让我们应用这个概念来创建一个组件,以表格格式显示费用分录项目的集合。
第 1 步 - 在您最喜欢的编辑器中打开我们的费用管理器应用程序。
在 src/components 文件夹中创建一个文件ExpenseEntryItemList.css以包含组件的样式。
在 src/components 文件夹中ExpenseEntryItemList.js另一个文件以创建 ExpenseEntryItemList 组件
第 2 步 - 导入 React 库和样式表。
步骤3 - 创建ExpenseEntryItemList类并调用构造函数。
创建一个 render() 函数。
步骤 4 - 使用 map 方法生成 HTML 表行的集合,每个行代表列表中的单个费用分录项目。
在这里,key 标识每一行,并且它在列表中必须是唯一的。
步骤5 - 接下来,在render()方法中,创建一个HTML表,并在行部分包含列表表达式。
最后,导出组件。
现在,我们已经成功创建了将费用项目呈现为 HTML 表格的组件。完整代码如下:
index.js:
打开 index.js 并导入我们新创建的 ExpenseEntryItemList 组件。
接下来,声明一个列表(费用分录项目),并在文件中用一些随机值填充它index.js。
const items = [
{ id: 1, name: "Pizza", amount: 80, spendDate: "2020-10-10", category: "Food" },
{ id: 1, name: "Grape Juice", amount: 30, spendDate: "2020-10-12", category: "Food" },
{ id: 1, name: "Cinema", amount: 210, spendDate: "2020-10-16", category: "Entertainment" },
{ id: 1, name: "Java Programming book", amount: 242, spendDate: "2020-10-15", category: "Academic" },
{ id: 1, name: "Mango Juice", amount: 35, spendDate: "2020-10-16", category: "Food" },
{ id: 1, name: "Dress", amount: 2000, spendDate: "2020-10-25", category: "Cloth" },
{ id: 1, name: "Tour", amount: 2555, spendDate: "2020-10-29", category: "Entertainment" },
{ id: 1, name: "Meals", amount: 300, spendDate: "2020-10-30", category: "Food" },
{ id: 1, name: "Mobile", amount: 3500, spendDate: "2020-11-02", category: "Gadgets" },
{ id: 1, name: "Exam Fees", amount: 1245, spendDate: "2020-11-04", category: "Academic" }
]
通过使用 ExpenseEntryItemList 组件,将项目传递给项目属性。
index.js的完整代码如下:
import React from 'react';
import ReactDOM from 'react-dom';
import ExpenseEntryItemList from './components/ExpenseEntryItemList'
const items = [
{ id: 1, name: "Pizza", amount: 80, spendDate: "2020-10-10", category: "Food" },
{ id: 1, name: "Grape Juice", amount: 30, spendDate: "2020-10-12", category: "Food" },
{ id: 1, name: "Cinema", amount: 210, spendDate: "2020-10-16", category: "Entertainment" },
{ id: 1, name: "Java Programming book", amount: 242, spendDate: "2020-10-15", category: "Academic" },
{ id: 1, name: "Mango Juice", amount: 35, spendDate: "2020-10-16", category: "Food" },
{ id: 1, name: "Dress", amount: 2000, spendDate: "2020-10-25", category: "Cloth" },
{ id: 1, name: "Tour", amount: 2555, spendDate: "2020-10-29", category: "Entertainment" },
{ id: 1, name: "Meals", amount: 300, spendDate: "2020-10-30", category: "Food" },
{ id: 1, name: "Mobile", amount: 3500, spendDate: "2020-11-02", category: "Gadgets" },
{ id: 1, name: "Exam Fees", amount: 1245, spendDate: "2020-11-04", category: "Academic" }
]
ReactDOM.render(
<React.StrictMode>
<ExpenseEntryItem item={item} />
</React.StrictMode>,
document.getElementById('root')
);
ExpenseEntryItemList.css:
打开ExpenseEntryItemList.css并为表格添加样式。
使用 npm 命令启动应用程序。
npm start
输出
最后,打开浏览器,在地址栏中输入 http://localhost:3000,然后按回车键。
项目 |
量 |
日期 |
类别 |
Pizza |
80 |
Sat Oct 10 2020 |
Food |
Grape Juice |
30 |
Man Oct 12 2020 |
Food |
Cinema |
210 |
Fri Oct 16 2020 |
Entertainment |
Java Programming book |
242 |
Thu Oct 15 2020 |
Academic |
Mango Juice |
35 |
Fri Oct 16 2020 |
Food |
Dress |
2000 |
Sun Oct 25 2020 |
Cloth |
Tour |
2555 |
Thu Oct 29 2020 |
Entertainment |
Meals |
300 |
Fri Oct 30 2020 |
Food |
Mobile |
3500 |
Mon Nov 02 2020 |
Gadgets |
Exam Fees |
1245 |
Wed Nov 04 2020 |
Academic |