React-Native中props具体使用详解


Posted in Javascript onSeptember 04, 2017

props就是属性,是为了描述一个组件的特征而存在的。它是父组件传递给子组件的。

使用props

通过上一个页面传递

新建一个 PropsTest.js 文件

exprot default class PropsTestextendesComponent{
  render(){
    return <Text>{this.props.name}</Text>
  }
}

在上一个页面中使用PropsTest组件

import PropsTest from './PropsTest'

<PropsTest 
  name = 'XiaoMing'
/>

注意: 上方代码,均为代码片段。

默认属性,以及它的作用

由于props的属性都是上个页面传递的,所以无法修改它。但是我们可以在PropsTest文件中,给props定义一些默认的值。

exprot default class PropsTestextends Component{
  static defaultProps={
    name: 'XiaoHong'
  }
  render(){
    return <Text>{this.props.name}</Text>
  }
}

注意,defaultProps 需要使用static关键字来做静态修饰。这样,如果上个页面没有传值,则显示的是这个默认的属性。

对props进行约束和检查

exprot default class PropsTestextends Component{
  static defaultProps={
    name: 'XiaoHong'
  }
  static propTypes={
    name: PropTypes.string,
    age: PropTypes.number,
    sex: PropTypes.string.isRequired
  }
  render(){
    return <Text>{this.props.name}</Text>
  }
}

对props里面的属性进行类型判断,可以使用propTypes来做到,同样需要使用static关键字来修饰。

isRequired 可以指定必填项

注意:

propTypes属性 在 react 包中,需要先导入才能使用。

props延伸操作符

ES6的最新语法

假如我们的组件需要好多属性,如下:

params = {name: 'XiaoZhang', age: 18, sex: '男'}

// 如果需要传递给下一个页面需要:
<PropsTest
  name = {params.name}
  sex = {params.sex}
  age = {params.age}
/>
// 等等,这样如果属性特别多,代码将会变得难以维护。

在ES6中可以使用最新的延伸操作符特性

<PropsTest
  {...params}
/>

非常的简洁

props解构赋值

ES6的最新语法

通过延伸操作符传递的对象,在另一个组件中想要从中获取某几个来使用,可以用解构赋值的方式

var {name, age} = params;

// 其他地方就可以直接引用name和age了

{name}或{age}

// 这么做的好处,同样是不需要使用如下的传统方式

{params.name}或{params.age}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JsEasy简介 JsEasy是什么?与下载
Mar 07 Javascript
event.X和event.clientX的区别分析
Oct 06 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
Jan 15 Javascript
jQuery的文档处理程序详解
May 10 Javascript
解决微信浏览器Javascript无法使用window.location.reload()刷新页面
Jun 21 Javascript
JS实现n秒后自动跳转的两种方法
Nov 30 Javascript
Google 地图控件集详解及实例代码
Aug 06 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
Sep 04 #Javascript
JS与HTML结合实现流程进度展示条思路详解
Sep 03 #Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
Sep 03 #Javascript
JS实现页面内跳转的简单代码
Sep 03 #Javascript
初探JavaScript 面向对象(推荐)
Sep 03 #Javascript
jquery+css实现下拉列表功能
Sep 03 #jQuery
使用JavaScript实现点击循环切换图片效果
Sep 03 #Javascript
You might like
php内核解析:PHP中的哈希表
2014/01/30 PHP
php获取域名的google收录示例
2014/03/24 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
JavaScript在IE和Firefox(火狐)的不兼容问题解决方法小结
2010/04/13 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
jQuery 插件仿百度搜索框智能提示(带Value值)
2013/01/22 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
详解python单例模式与metaclass
2016/01/15 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
在python中利用numpy求解多项式以及多项式拟合的方法
2019/07/03 Python
Django框架视图函数设计示例
2019/07/29 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
css3 position fixed固定居中问题解决方案
2014/08/19 HTML / CSS
医学护理系毕业生求职信
2013/10/01 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS