在这个简短的教程中,你将学习如何在jsx render函数中迭代一个数组或对象。
在反应组件中,Render方法返回单个元素渲染到页面。
有时,我们想用for循环来显示子组件。我们可以在render jsx中使用循环,但要迭代和显示子组件是很困难的。
这篇文章解释了雇员数组数据存储在反应状态中,使用反应道具在子组件中显示这些数据,并在父组件中进行迭代。
让我们在react中创建EmployeeComponent.js。
这个组件从react props中读取对象,并用ul/li元素显示在页面上。收到的数据是一个对象,使用 es6对象销毁语法 转换为单个字段。
import React, { Component } from 'react';
import "../index.css"
export default class EmployeeComponent extends Component {
render() {
const { id, name, salary } = this.props.data;
return <div>
<li>Id:{id}</li>
<li>Name:{name}</li>
<li>Salary:{salary}</li>
</div>
在父组件中,雇员列表在React rdx中使用不同的语法进行迭代。
在React jsx内部迭代数组循环
反应状态对象被初始化为雇员数据的数组。
在渲染方法中,以下是一系列的步骤
使用基本的for循环语法来迭代数组,你可以查看更多关于for循环的信息
构建一个带有数据的雇员组件子数组
请注意,每个子组件都有一个唯一的关键属性,如果你不传递这个属性,你会得到一个错误,比如一个列表中的每个子组件都应该有一个唯一的 "关键 "道具。
最后,组件阵列被放置在div元素内。
下面是完整的示例代码。
import React, { Component } from 'react';
import EmployeeComponent from './EmployeeComponent';
import TextControl from './TextControl';
export default class EmployeeListComponent extends Component {
constructor() {
super();
this.state = {
employees: [
"id": "1",
"name": "Franc",
"salary": "5000"
"id": "11",
"name": "John",
"salary": "6000",
render() {
let list = [];
for (var i = 0; i < this.state.employees.length; i++) {
list.push(<EmployeeComponent key={i} data={this.state.employees[i]} ></EmployeeComponent >);
return <div>{list}</div>;
你也可以使用react jsx中的map方法重写上述内容
map是JavaScript中数组的内置函数,map遍历数组中的每个元素并返回新的数组。这些方法在迭代过程中对每个元素都有一个回调的调用。它使用es6箭头函数进行回调。
与map,代码如下
render() {
let list = [];
this.state.employees.map((employee, index) => {
list.push();
return {list};
另一种方法是使用for-of语法重写 ,在react中进行迭代和渲染。
for-of循环是迭代对象的新方法。
render() {
var list = [];
for (const [index, employee] of this.state.employees.entries()) {
list.push();
return {list};
除了上述方法之外,你还可以用不同的方法在javascript中进行迭代。
由于react render只返回一个元素,所以在返回列表之前,使用上面提到的不同方法构建列表,并返回最终的数组。