React组件系统、props与状态(state)
多个组件合成一个组件:
var style = { fontSize: 20, color: '#ff0000' }; var WebSite = React.createClass({ render: function () { return ( <div style={style}> <Name name={this.props.name} /> <Link link={this.props.link} /> </div> ); } }); var Name = React.createClass({ render: function () { return ( <h1>{this.props.name}</h1> ); } }); var Link = React.createClass({ render: function () { return ( <a href={this.props.link}>{this.props.link}</a> ) } }); React.render(<WebSite name="lqc" link="www.baidu.com" />, document.getElementById('example'));
State状态
getInitialState: function () { return {object: false;} }
this.setState({object: !this.state.object});
var LikeButton = React.createClass({ getInitialState: function () { return {liked: false}; }, handleClick: function (event) { this.setState({liked: !this.state.liked}); }, render: function () { var text = this.state.liked ? '喜欢' : '不喜欢'; return ( <p onClick={this.handleClick}> 你<b>{text}</b>我。点我切换状态。 </p> ); } }); React.render(<LikeButton/>, document.getElementById('example'));
默认的props
var MyMessage = React.createClass({ getDefaultProps: function () { return { name: 'runoob' } }, render: function () { return <h1>{this.props.name}</h1> } }); React.render(<MyMessage/>, document.getElementById('example'));
state和props混合使用
var Website = React.createClass({ getInitialState: function () { return { name: "百度", link: 'http://www.baidu.com' } }, render: function () { return ( <div> <Name name={this.state.name} /> <Link link={this.state.link} /> </div> ); } }); // 构建下面两个组件的数据用props var Name = React.createClass({ render: function () { return ( <h1>{this.props.name}</h1> ) } }); var Link = React.createClass({ render: function () { return ( <a href={this.props.link}>{this.props.link}</a> ) } }); React.render(<Website />, document.getElementById('example'));
Props验证使用propTypes
propTypes: {
title: React.PropTypes.string.isRequired
}
多个组件渲染可以写在同一页面:
var Website = React.createClass({ getInitialState: function () { return { name: "百度", link: 'http://www.baidu.com' } }, render: function () { return ( <div> <Name name={this.state.name} /> <Link link={this.state.link} /> </div> ); } }); // 构建下面两个组件的数据用props var Name = React.createClass({ render: function () { return ( <h1>{this.props.name}</h1> ) } }); var Link = React.createClass({ render: function () { return ( <a href={this.props.link}>{this.props.link}</a> ) } }); React.render(<Website />, document.getElementById('example')); // Props验证使用propTypes var title= 'React'; var MyTitle = React.createClass({ propTypes: { title: React.PropTypes.string.isRequired }, render: function () { return ( <h1>{this.props.title}</h1> ) } }); React.render(<MyTitle title={title} />, document.getElementById('example2'));
下一节:
React组件的生命周期
React组件系统、props与状态(state)的更多相关文章
- React创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值
创建组件的方法,组件的props属性.state属性的用法和特点,父子组件传值,兄弟组件传值 1.react组件 1.1.创建组件的方法 1.1.1.函数组件 定义一个组件最简单的方式是使用JavaS ...
- 组件的props属性和state状态
props属性: 我使用代码来说明React中props属性: // Profile.jsx import React from 'react' ; export default Class Prof ...
- 创建组件的方法,组件的props属性、state属性的用法和特点,父子组件传值,兄弟组件传值
1.创建组件的方法 函数组件 class组件 1.1 函数组 无状态函数式组件形式上表现为一个只带有一个 `render()` 方法的组件类,通过函数形式或者 `ES6` 箭头 `functi ...
- React Native中组件的props和state
一.组件的属性(props)和状态(state) 1.属性(props) 它是组件的不可变属性(组件自己不可以自己修改props). 组件自身定义了一组props作为对外提供的接口,展示一个组件时只需 ...
- 【react】利用prop-types第三方库对组件的props中的变量进行类型检测
1.引言--JavaScript就是一个熊孩子 1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java ...
- React组件开发
目录: 属性:props 内联样式 状态记忆 : state 生命周期 访问DOM 表单输入 承接快速入门篇:http://www.cnblogs.com/jasonnode/p/4444504.ht ...
- 深入React组件生命周期
上篇博文使用React开发的一些注意要点对React开发的一些重点进行了简单的罗列总结,虽然也提到了React生命周期,但只略微小结,在此单独写篇React生命周期的总结. 在组件的整个生命周期中,随 ...
- React组件和生命周期简介
React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...
- React组件性能调优
React是一个专注于UI层的框架,它使用虚拟DOM技术,以保证它UI的高速渲染:使用单向数据流,因此它数据绑定更加简单:那么它内部是如何保持简单高效的UI渲染呢?这种渲染机制有可能存在什么性能问题呢 ...
随机推荐
- python的编码问题
本文简单介绍了各种常用的字符编码的特点,并介绍了在python2.x中如何与编码问题作战 :) 请注意本文关于Python的内容仅适用于2.x,3.x中str和unicode有翻天覆地的变化,请查阅其 ...
- Facebook内部分享:26个高效工作的小技巧
春节假期马上就要结束了,该收收心进入新一年的工作节奏了~分享 26 个高效工作的小技巧,希望对大家有所帮助~(我发现自己只有最后一条执行得很好,并且堪称完美!) 1.时间常有,时间优先. 2.时间总会 ...
- Oracle相关账户几个语句
Oracle安装完成后,在“开始”里找到SQL Plus运行,要求输入帐号和密码,用system/密码连接. 1.Oracle里有一个默认的scott账户密码tiger,用该账户连接: CONN 用户 ...
- 解决org.openqa.selenium.WebDriverException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms org.springframework.beans.BeanInstantiation
解决方法为将selenium-server-standalone-2.37.0.jar升级至selenium-server-standalone-2.41.0.jar即可. 下载地址:http://s ...
- HighChats报表使用C#mvc导出本地图片
最近工作使用了HighCharts,要用到保存成图片功能,但是是内部使用,不允许连接外网,于是就学习了下highcharts生成本地图片. highcharts有一个exporting.js来负责导出 ...
- Til the Cows Come Home
Description Bessie is out in the field and wants to get back to the barn to get as much sleep as pos ...
- 怎么把U盘启动改为硬盘启动(适用于U盘安装系统时)
两种方法: 一:安装时: 在自定义创建分区后,如图: 选择系统的启动程序安装的位置,在change device 里设置第一启动装置,和第二启动装置! 二:安装后: 开机未进入系统按F2,进入BIO ...
- html注意
value的值是指input type="text" 等里面的value值,<p></p>标签里面的不是value值.
- vsftpd的主动模式与被动模式
好不容易配置好了vsftpd服务,在CentOS本机测试没有问题,但是在我的Windows机器上使用FlashFXP连接的时候却出问题了: 我虽然知道FTP存在两种模式:PORT(主动)模式.PASV ...
- BZOJ3175 Tjoi2013 攻击装置(二分图匹配)
传送门 Description 给定一个01矩阵,其中你可以在0的位置放置攻击装置.每一个攻击装置(x,y)都可以按照"日"字攻击其周围的 8个位置(x-1,y-2),(x-2,y ...