微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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函数会让我们的代码更加精简和易读:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐