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 相关文章推荐
setTimeout和setInterval的深入理解
Nov 08 Javascript
jquery中对于批量deferred的处理方法
Jan 22 Javascript
jQuery操作元素css样式的三种方法
Jun 04 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
angularJS 中$attrs方法使用指南
Feb 09 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 Javascript
JavaScript DOM 对象深入了解
Jul 20 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
Apr 21 Javascript
深入理解Node内建模块和对象
Mar 12 Javascript
vue路由中前进后退的一些事儿
May 18 Javascript
vue中实现高德定位功能
Dec 03 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 前一天或后一天的日期
2008/06/28 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
json数据的列循环示例
2013/09/06 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
JavaScript 冒泡排序和选择排序的实现代码
2016/09/03 Javascript
JavaScript字符串对象
2017/01/14 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
Python中用sleep()方法操作时间的教程
2015/05/22 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
大二学期个人自我评价
2014/01/13 职场文书
教师绩效考核方案
2014/01/21 职场文书
《春晓》教学反思
2014/04/20 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
2019年大学推荐信
2019/06/24 职场文书
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
Android 中的类文件和类加载器详情
2022/06/05 Java/Android