React Native之箭头函数和延展操作符(...)

箭头函数

在我们学习React Native的过程中,我们经常会遇到"=>"这样形式的书写,如下:

import React, {Component} from 'react'
import {AppRegistry, StyleSheet, View, Text, TouchableOpacity} from 'react-native'class RN_Arrow_Function extends Component {//定义箭头函数showMessage = (msg) => {alert(msg)}render() {return (<TouchableOpacity><Text onPress={() => {this.showMessage('arrow function')}}>请点击</Text></TouchableOpacity>)}
}module.exports = RN_Arrow_Function

从以上代码中我们可以看到有两处使用了'=>',在ES6中,我们将使用这种箭头形式定义的函数称之为箭头函数

上面的箭头函数showMessage等同于:

showMessage = function (msg) {alert(msg)
}
//等同于
showMessage = function (msg) {return alert(msg)
}

如果箭头函数没有参数或者有多个参数,都使用小括号括起来,如下:

//定义不带参数的箭头函数(不带参数的需要加一个空的圆括号)
showMsgNoParams = () => {console.log('不带参数的箭头函数')
}//定义带多个参数的箭头函数(带多个参数使用圆括号将参数括起来,参数之间用逗号隔开)
showMsgMutParams = (param01,param02) => {alert(param01)
}//定义只有一个参数的箭头函数(圆括号可加可不加)
showMsgOneParams = param01 => {alert(param01)
}

如果箭头函数的函数体只有一条语句,则可以省略花括号,如下:

showMsgOneParams = param01 => alert(param01)

如果箭头函数返回的是一个对象,由于花括号被解释为代码块,因此,必须在对象外面加上圆括号,如下:

//返回一个对象
getMsgObj = () => ({id:1,name:'VennyChen',age:24})

如果箭头函数返回的是一个组件,则只需要写圆括号,如下:

//返回一个组件
getCustomComponent = () => (<Text>return Component</Text>
)

延展操作符

我们平常在做项目的时候,在传递属性值的时候,通常情况下,我们会这样写:

let student = {name: 'VennyChen',age: 24,sex: '男'
}
/*传统的写法*/
<PropsSpread name={student.name}age = {student.age}sex = {student.sex}>
</PropsSpread>

但是,如果上面PropsSpread组件的属性少则没有什么影响,如果随着项目的需求变化,PropsSpread属性增加到几十个,如果还如上所写,那么不可避免的,代码的维护将会变得越来越困难,因此,在ES6的最新语法中,出现了一种新的延伸操作符...,用来解决随着属性增多变得难以维护的问题,使用方式如下:

let student = {name: 'VennyChen',age: 24,sex: '男'
}/*使用延展操作符*/
<PropsSpread {...student}></PropsSpread>

通过以上两种方式的对比,我们可以看到,使用延展操作符减少了属性的批量赋值,如此,大大提高了代码的可维护性,完整代码如下:

import React, {Component} from 'react'
import {View, Text} from 'react-native'class RN_Spread_Operator extends Component {render() {let student = {name: 'VennyChen',age: 24,sex: '男'}return (/*传统的写法*/<PropsSpread name={student.name}age = {student.age}sex = {student.sex}></PropsSpread>/*等同于*//*使用延展操作符*//*<PropsSpread {...student}></PropsSpread>*/)}
}class PropsSpread extends Component {render() {let {name,age,sex} = this.propsreturn (<Text>{/*{this.props.name + '-' + this.props.age + '-' + this.props.sex}*/}{name+'-'+age+'-'+sex}</Text>)}
}module.exports = RN_Spread_Operator

转载于:https://www.cnblogs.com/fingersense/p/7979050.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

读《爱的艺术》书评而问

豆瓣关于这本书的评论 我回复了这一篇评论 其实&#xff0c;更想拿这些问题和读者诸君交流&#xff0c;你们怎么看的&#xff1f; -------------------------------------------------------------------------------------- “一个成熟的人最终能达到他既是自己的母亲&#xf…

10.5 0819吉米牛逼

吉米真牛逼&#xff0c;这场比赛热火赢得漂亮&#xff0c;没有阿德巴约&#xff0c;没有德拉季奇的情况下&#xff0c;吉米硬生生把自己变成了詹姆斯。右侧45度拿球&#xff0c;突破顶着老詹急停跳投&#xff0c;又一次在老詹面前拿下两分&#xff0c;马上回防&#xff0c;面对…

flex 布局示例

1 <!DOCTYPE html>2 <html>3 4 <head>5 <meta charset"utf-8">6 <title>flex实例</title>7 <style>8 * {9 font-family: "微软雅黑";10 }11 12 html,…

既生Flash,又何生EEPROM?

我们正常编译生成的二进制文件&#xff0c;需要下载烧录到单片机里面去&#xff0c;这个文件保存在单片机的ROM中&#xff0c;ROM这个名称指的是「read only memory」的意思&#xff0c;所有可以完成「read only memory」这种特性的存储介质都可以称为ROM&#xff0c;我们一般使…

网吧电影服务器解决方案完全指南(一)

我们在这里所讲到的流媒体服务器&#xff0c;从本质上来讲&#xff0c;根本目的也是为了满足顾客这方面的要求。但相对于目前大多数网吧采用的系统来说&#xff0c;主要基于我们吸引顾客&#xff0c;在影视点播方面体现本网吧区别于其他竞争对手的特色。 <?xml:namespace p…

URLEncoder.encode问题

遇到java里的URLEncoder.encode方法编码后与javascript的encodeURIComponent方法的结果有点不一样&#xff0c;找了一下资料&#xff0c;原来URLEncoder实现的是HTML形式的规范&#xff0c;jdk文档里这么说&#xff1a; Utility class for HTML form encoding. This class cont…

数字油田

随着技术的进步和应用的深入&#xff0c;数字油田的概念也处于不断的发展之中&#xff0c;因此&#xff0c;到目前为止&#xff0c;数字油田尚无一个确切的概念&#xff0c;就目前的应用而言&#xff0c;数字油田一般可以描述为&#xff1a;数字油田是以油田为研究对象&#xf…

文本或代码中 \n 和 \r 的区别

我们使用printf打印时基本都会用到 \n 和 \r 之类控制字符&#xff0c;比如&#xff1a;printf("hello world!\r\n");那你知道这些 \n 和 \r 的区别吗&#xff1f;# 关于「 \n 」 和「 \r 」在ASCII码中&#xff0c;我们会看到有一类不可显示的字符&#xff0c;叫控制…

NYOJ276 比较字母大小

描述任意给出两个英文字母&#xff0c;比较它们的大小&#xff0c;规定26个英文字母A,B,C.....Z依次从大到小。 输入第一行输入T&#xff0c;表示有T组数据&#xff1b;接下来有T行&#xff0c;每行有两个字母&#xff0c;以空格隔开&#xff1b;输出输出各组数据的比较结果&am…

公布一个硬盘杀手的分析报告

这个东东不是新货了&#xff0c;最近发现受害者在增多&#xff0c;严重的是这个病毒破坏的硬盘数据&#xff0c;很难修复&#xff0c;有必要公布这个病毒的更多细节。病毒名&#xff1a;Win32.Troj.Small.cf.40960该病毒是一个硬盘杀手。该病毒会向硬盘分区的各分区起始扇区写入…

中兴5G和展锐原厂芯片开发,怎么选?

最近跟一个读友聊天&#xff0c;谈到的还是offer选择的问题&#xff0c;我觉得讨论这个问题比讨论技术问题更加重要「特别是刚出校门的学生&#xff0c;选择一个好的行业比刚毕业的薪资重要」。当然了&#xff0c;肯定有人跟我说我不务正业&#xff0c;整天瞎BB&#xff0c;好的…

qsort 三级排序

nyoj 一种排序 描述现在有很多长方形&#xff0c;每一个长方形都有一个编号&#xff0c;这个编号可以重复&#xff1b;还知道这个长方形的宽和长&#xff0c;编号、长、宽都是整数&#xff1b;现在要求按照一下方式排序&#xff08;默认排序规则都是从小到大&a…

梦中女孩,不知还能不能再见你一面

我将于茫茫人海之中&#xff0c;访我惟一灵魂伴侣&#xff0c;得之我幸&#xff0c;失之我命&#xff0c;如是而已.那天,第一次见到你,没有陌生的感觉,很熟悉很熟悉.那天,你走了,留给我的仅有一个浅浅的微笑.那天,没有机会和你告别,没有机会和你说声再会.那天,再一次见到你,我们…

40张动图揭示各种传感器工作原理!

应变加速度感应器▼称重式料位计▼电子皮带秤重示意图▼电子吊车秤▼荷重传感器用于测量汽车衡的原理▼荷重传感器的应用▼TiO2氧浓度传感器结构及测量电路▼布料张力测量及控制原理▼直滑式电位器控制气缸活塞行程▼电位器式传感器▼陶瓷湿度传感器▼多孔性氧化铝湿敏电容原理…

lpad与rpad

--lpad(str, n, [pad_str])--rpad(str, n, [pad_str])-- 如果n<length(str),则显示substr(str,1,n)-- 否则&#xff0c;分别从左边和右边使用pad_str进行填充-- 其中n表示最后输出结果字符串的长度-- 如果pad_str为空&#xff0c;则用空格来填充select lpad(abc,2,#) from d…

利用qsort二级排序

qsort int comp(const void *a,const void *b) { struct node*c(node*)a; struct node*d(node*)b; if(c->x!d->x) return c->x-d->x; else return c->y-d->y; } qsort(s,m,sizeof(s[0]),comp); qsort的二级排序完整代码&#xff1a; #include<stdio.…

git log 你学废了吗?

# 前言Git 是一个工具&#xff0c;用来管理代码的东西&#xff0c;要是Git 使用不好&#xff0c;确实还是挺尴尬的&#xff0c;我今晚看了个文章&#xff0c;发现Git log 是的玄机都还很多。比如这样的# git log --help如果觉得git 还不会用&#xff0c;可以看看git log --help…

部署WSE3.0实战:性能、证书与WSE910错误

早些时候看WSE3.0附带sample code&#xff0c;似乎挺简单&#xff0c;根据项目情况&#xff0c;选择UsernameForCertificate断言&#xff0c;使用测试服务证书在本机上&#xff08;winxp SP2&#xff09;执行很顺利&#xff0c;可以将Web service 部署到服务器上就得到“WSE 91…

cors

起因 有同学在nginx站点配置中加了一行Access-Control-Allow-Origin *,导致微信中业务数据异常&#xff0c;抓包看http头有两个Access-Control-Allow-Origin字段&#xff0c;一个是站点自己的域名&#xff0c;一个是*。 为了实现跨域资源访问&#xff0c;在代码和nginx配置中都…

qsort与sort

sort()函数是C中的排序函数其头文件为&#xff1a;#include<algorithm>头文件&#xff1b; qsort()是C中的排序函数&#xff0c;其头文件为&#xff1a;#include<stdlib.h> sort是不需要自己写compare的&#xff0c;sort默认是升序排列&#xff0c;如果想要降序就…