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

2023-11-09

在我们实际开发中,循环是必不可少的,尤其在表格中的数据显示,我们会把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即可!

显示如下:

130522_WnZU_2352644.png

审查元素:

130550_FIIH_2352644.png

在我们的{}里面接收的是数组,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函数

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

153125_Y1hS_2352644.png

我们可以把循环加入到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',
			'n2',
			'n3',
			'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函数会让我们的代码更加精简和易读:

153353_oO5D_2352644.png

转载于:https://my.oschina.net/tbd/blog/1544730

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

react学习笔记9:循环处理和数组map函数 的相关文章

  • 如何查询和过滤 Firebase 实时数据库 [重复]

    这个问题在这里已经有答案了 我想从数据库中获取所有人员 其中名字和姓氏由用户输入给出 到目前为止 这是我的代码 admin database ref persons orderByChild Firstname equalTo firstN
  • Javascript 函数指针,以参数作为函数中的参数

    不确定标题的措辞是否正确 或者是否有更好的表达方式 但我认为还可以 无论如何 到目前为止我了解以下内容 a b a b c foo 其中 foo 是在其他地方定义的函数 不接受任何参数 只会导致函数 a b 使用上述参数运行 然后可以在函数
  • 在 JavaScript 中计算不包括周末和节假日的天数

    我正在尝试编写一个代码 其中将计算总天数 不包括周末和自定义假期 我通过 stackoverflow 和 adobe 论坛进行搜索以找到解决方案 并提供了以下代码 如果公共假期恰逢工作日 周六至周三 则不计算在内 我的问题是 如果公共假期落
  • 在设置后用 Javascript 替换 'var' css 属性

    我有一个元素 其上设置了 var 属性 如下所示 div class divwithbackground div CSS divwithbackground after background image var page header se
  • 如何对像 Excel Pivot 这样两个键必须匹配的数组求和?

    我尝试对 Datum 和 Material 必须匹配的所有 Menge 和 Fehler 值求和 结果应类似于 Excel 数据透视表 到目前为止 这是我的代码 但我不知道如何添加也必须匹配的第二个键 Material 我希望你能理解我试图
  • 如何使用 javascript 将我的域名字母大写?

    假设我的域名是www hello com 如何使用 jQuery JavaScript 使浏览器的 URL 栏看起来像 www HELLO com 您无法更改浏览器地址栏中显示的内容 这是一项基本的安全功能 您可以使您的域名全部大写 并将页
  • es6-module 默认导出导入为未定义

    我不确定我在这里缺少什么 我正在使用 jspm 和 es6 module loader 开发一个项目 我有一个模块定义如下 import hooks from hooks import api from api import tools f
  • 全日历与 UTC 和本地日期的混淆

    我确实让 fullcalendar 正常初始化 所以它代表当前日期 午夜 gt 午夜 1 天 1 小时时段 我从其他一些数据源获取带有时间戳的数据 格式为 YYYY MM DD HH mm 作为字符串传输 无时区信息 因此 我将该字符串转换
  • 如何将值从孩子的孩子传递给父母?

    我有一个父组件 有一个子组件 它也有一个子组件 Parent Child One child of parent Child Two child of child 当在子二中定义一个值时 我使用回调将该值传递给子一 但我也想将相同的值传递回
  • React setState回调返回值

    我是 React 新手 我希望实现这种流程 set the state execute a function f an async one which returns a promise set the state again return
  • 如何创建显示/隐藏 Docusaurus 项目中所有详细标签状态的按钮?

    根据讨论here https stackoverflow com questions 58579048 how to add or remove the open attribute from all details tags in a r
  • Lodash _.hasIntersection?

    我想知道两个或多个数组是否有共同的项目 但我不在乎这些项目是什么 我知道 lodash 有一个 intersection方法 但我不需要它来遍历每个数组的每个项目 相反 我需要类似的东西 hasIntersection一旦找到第一个常见的出
  • Python 中的 Firebase 身份验证时出现 KeyError:“databaseURL”

    相信你做得很好 我是 firebase 的新手 正在尝试进行用户身份验证 我已经安装了pyrebase4并在firebase控制台上创建了一个项目 我还启用了使用 电子邮件和密码 登录并尝试连接我的应用程序 下面是我正在尝试的代码 impo
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp
  • 如何从 Visual Studio Code API 打开浏览器

    我只是在探索一种从用于开发扩展的 Visual Studio Code API 打开默认浏览器的方法 以下是我的代码 var disposable vscode commands registerCommand extension brow
  • 使用 jQuery 的 ajax 方法以 blob 形式检索图像

    我最近问了另一个 相关 问题 这导致了这个后续问题 提交数据而不是输入表单的文件 https stackoverflow com questions 17643142 submitting data instead of a file fo
  • 从 node.js 创建对 AWS ES 实例的有效签名请求

    我试图找到一个示例 说明如何连接到 Node js 中的 AWS ES 实例 然后通过一个简单的请求访问 ES 集群 我正在尝试使用elasticsearch节点包 https www npmjs com package elasticse
  • 数组长度未定义[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图按如
  • 使用 CSP 防止自动点击链接 XSS 攻击

    当将 CSP 用于稍微不同的目的 沙箱 时 我意识到一个非常简单的自动点击链接似乎甚至可以绕过相对严格的 CSP 我所描述的内容如下 内容安全政策 default src none script src unsafe inline 还有身体
  • 如何将函数导入到Vue组件中?

    我正在尝试将单个函数导入到我的 Vue 组件中 我为我的函数创建了一个单独的 js 文件 randomId js exports randomId gt My function 在我的 Vue 组件中 我导入了 Random js let

随机推荐

  • Swift的几种传值方式

    传值方式 在进行页面跳转过程中无法避免需要进行值的传递 那么值的传递可以分为正向传值和反向传值 例如在SourceViewController跳转至DestinationViewController的过程中需把前者的属性值传递给后者称为正向
  • 【系列 1】手写vue响应式原理

    手写vue响应式原理 首先我们看看原生 vue 做了什么 可见 vm 第一层与 data 内都能获取到 data 数据 并且其数值都进行了 ge
  • 王道训练营-C语言-1

    1 字符 include
  • 【热门框架】Maven中聚合,继承指的是什么?有什么作用?

    Maven中的聚合和继承是两个重要的功能 用于管理多个项目的共同部分 1 聚合 Maven中的聚合 Aggregation 指的是将多个子项目聚合成一个父项目的过程 聚合的语法如下 xml
  • 数据库初探(1)————关于InnoDB和MyISAM两种数据库存储引擎

    1 mysql中最常见的两种数据库引擎 InnoDB存储引擎 InnoDB存储引擎是Mysql的默认事务引擎 也是最重要 使用最广泛的存储引擎 它被设计用来处理大量的短期事务 短期事务大部分情况下都是可以正常提交的 很少回滚 MyISAM存
  • 【超详解】JavaWeb三大组件讲解

    文章目录 前言 一 Servlet 二 Filter 三 Listener 总结 前言 JavaWeb三大组件指的是 Servlet Filter Listener 三者提供不同的功能 然而很多人可能只用过其中一个或者两个 Servlet
  • 创建React项目

    在开发React项目前最关键的当然是项目的创建 现在的前端工程化使得前端项目的创建也变得越来越复杂 在这里介绍三种从零开始创建React项目的方式 分别是在浏览器中直接引入 使用官方脚手架create react app 使用Webpack
  • 不会盗QQ,还当什么程序员?

    上面这个段子估计很多朋友都看过 程序员被黑过无数次 在其他人眼中 仿佛我们需要写得了木马 翻得了围墙 修得了电脑 找得到资源 但凡是跟计算机沾点边的 咱都得会才行 段子归段子 言归正传 对于咱们程序员来说 多多少少了解一些信息安全的技术知识
  • 打印HashMap的方法分享

    HashMap简介 Hash Map是哈希表基于 Map 接口的实现类 HashMap用于存储数据 允许使用null值和null键 除了非同步和允许使用 null 之外 HashMap 类与 Hashtable 大致相同 HashMap不保
  • 区块链三加一:什么是量化交易

    量化交易是指以先进的数学模型替代人为的主观判断 利用计算机技术从庞大的历史数据中海选能带来超额收益的多种 大概率 事件以制定策略 极大地减少了投资者情绪波动的影响 避免在市场极度狂热或悲观的情况下作出非理性的投资决策 量化交易 有时候也称自
  • Kali Linux Armitage生成被控端和主控端

    目录 说明 使用 Armitage生成被控端和主控端 说明 按照 Kali Linux2 网络渗透测试实践指南 第二版 第八章操作 仅供学习讨论使用 请勿进行非法操作 使用 Armitage生成被控端和主控端 选中 payload 然后选择
  • 深入解析锂电池保护电路工作原理

    1 锂离子电池介绍 锂离子电池是一种二次电池 充电电池 它主要依靠锂离子在正极和负极之间移动来工作 在充放电过程中 Li 在两个电极之间往返嵌入和脱嵌 充电时 Li 从正极脱嵌 经过电解质嵌入负极 负极处于富锂状态 放电时则相反 锂离子电池
  • 对象不支持“addEventListener”属性或方法 ie8 jquery

    解决方法 1 请查看你使用的jquery版本 2 jQuery 2 x 已经不支持IE9以下的IE浏览器 如果你想继续支持IE6 7 8 请使用jQuery 1 x版本 最新版本 jQuery 1 11 0 3 如果要兼容 IE 6 7 8
  • 假设检验/T检验/F检验/Z检验/卡方检验

    显著性水平 一个概率值 原假设为真时 拒绝原假设的概率 表示为 alpha 常用取值为0 01 0 05 0 10 什么是P值 p值是当原假设为真时样本观察结果及更极端结果出现的概率 如果P值很小 说明这种情况发生的概率很小 如果这种情况还
  • react面试题(三)

    1 setState 何时同步何时异步 1 setState 只在合成事件 react为了解决跨平台 兼容性问题 自己封装了一套事件机制 代理了原生的事件 像在jsx中常见的onClick onChange这些都是合成事件 和钩子函数 生命
  • hive遇到的错误

    1 数据库的命名不能用数字开头 0 jdbc hive2 192 168 171 151 10000 gt create database 0328 不区分大小写字母 Error Error while compiling statemen
  • 离散数学期末复习-求主范式

    文章目录 析取范式与合取范式 定义 简单析取式 析取式 简单合取式 合取式 析取范式 合取范式 范式 公式A的析取范式 公式A的合取范式 命题公式的范式 求公式A的范式的步骤 求公式的范式举例 极大项与极小项 定义 主析取范式与主合取范式
  • 银河麒麟操作系统(kylin os)学习

    poweroff 关机命令 sudo su 进入超级用户 su username 切普通用户 Ctrl Alt t 打开终端terminal窗口 Ctrl Alt d 最小化全部应用 然后显示桌面 dpkg i libqt5 deb 安装d
  • 安卓app与阿里云服务器的无线通信(非局域网)

    参考 安卓app与阿里云服务器的无线通信 非局域网 作者 图触靓 发布时间 2020 08 01 16 13 14 网址 https blog csdn net bhbhhyg article details 107732156 目录 写在
  • react学习笔记9:循环处理和数组map函数

    为什么80 的码农都做不了架构师 gt gt gt 在我们实际开发中 循环是必不可少的 尤其在表格中的数据显示 我们会把ajax的json数据显示在表格中 1 一个最简单的例子 import React from react import