react学习笔记9:循环处理和数组map函数

在我们实际开发中,循环是必不可少的,尤其在表格中的数据显示,我们会把ajax的json数据显示在表格中。

1.一个最简单的例子

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';


//设置组件
class Table extends React.Component {
	
    
	render() {
		
		var arr=[
			<tr key="0"><td>1</td><td>n1</td></tr>,<tr key="1"><td>2</td><td>n2</td></tr>,<tr key="2"><td>3</td><td>n3</td></tr>,<tr key="3"><td>4</td><td>n4</td></tr>
		];

		return <table><tbody>{arr}</tbody></table>
	}




	
}


ReactDOM.render(
    <div>
		<Table />
	</div>,document.getElementById('root')
);
registerServiceWorker();

我们的table组件组把arr数组形式的xml显示在对应位置。

key不写会警告我们,我们给要循环的写一个key即可!

显示如下:

审查元素:

在我们的{}里面接收的是数组,react会自动循环处理这个数组,然后渲染好结构。

2.数组数据的循环处理

我们把arr的内容提出到一个数组中,不要xml,然后用数组的push方法插入到另一个数组,把这个数组放在{}中:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';


//设置组件
class Table extends React.Component {
	
    
	render() {
		
		var arr=[
			'n1','n2','n3','n4'
		];
		
		var newarr=[];
		for(var i=0;i<arr.length;i++){
			newarr.push(<tr key={i}><td>{arr[i]}</td></tr>)
		};

		return <table><tbody>{newarr}</tbody></table>
	}




	
}


ReactDOM.render(
    <div>
		<Table />
	</div>,document.getElementById('root')
);
registerServiceWorker();

我们记住jsx语法就是js+xml,xml就是我们的结构。

3.模拟ajax的json数据循环处理

非常简单,我们在ajax设置数据即可,在render的return 直接获取数组形式的arr:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';


//设置组件
class Table extends React.Component {
	constructor(props) {
		super(props);
		// 设置 initial state
		this.state = {
			arr: []
		};
	
	}	
    
	render() {
		
		
		
		var newarr=[];
		for(var i=0;i<this.state.arr.length;i++){
			newarr.push(<tr key={i}><td>{this.state.arr[i].id}</td><td>{this.state.arr[i].name}</td></tr>)
		};

		return <table><tbody>{newarr}</tbody></table>
	}


	componentDidMount() {
	   	//ajax 模拟异步处理
		var arr=[
			{id:1,name:'n1'},{id:2,name:'n2'},{id:3,name:'n3'},{id:4,name:'n4'}
		];
	   	setTimeout(function(){
		   this.setState({arr:arr})
		}.bind(this),500)//让this指向类
	}

	
}


ReactDOM.render(
    <div>
		<Table />
	</div>,document.getElementById('root')
);
registerServiceWorker();

4.循环进阶,数组map函数

我们可能非常不喜欢这样的写法:

我们可以把循环加入到return的xml中,使用map:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import registerServiceWorker from './registerServiceWorker';


//设置组件
class Table extends React.Component {
	
    
	render() {
		
		var arr=[
			'n1','n4'
		];
		
		return <table><tbody>
		{
			arr.map(function(val,i){
				return <tr key={i}><td>{val}</td></tr>
			})
		}
		</tbody></table>
	}




	
}


ReactDOM.render(
    <div>
		<Table />
	</div>,document.getElementById('root')
);
registerServiceWorker();

使用map函数会让我们的代码更加精简和易读:

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...