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渲染呢?这种渲染机制有可能存在什么性能问题呢 ...
随机推荐
- wpf 任务栏闪烁
[StructLayout(LayoutKind.Sequential)] public struct FLASHWINFO { public UInt32 cbSize; public IntPtr ...
- 使用Intellij idea开发
使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 使用IntelliJ IDEA开发SpringMVC网站(二)框架配置 使用IntelliJ IDEA开发SpringMVC网站 ...
- 解决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 ...
- python学习之——计算文件行数
# -*- coding: cp936 -*- #转载源于:http://blog.csdn.net/houyj1986/article/details/21196027 #计算文件行数 #1.文件比 ...
- Unity(二)生命周期LifetimeManager
描述:Unity的生命周期是注册的类型对象的生命周期,而Unity默认情况下会自动帮我们维护好这些对象的生命周期,我们也可以显示配置对象的生命周期,Unity将按照配置自动管理. //创建一个Unit ...
- 高频交易策略[z]
Market Order以最高速下市价单(market order)是买方最基本的策略 Looking for Price Discrepancies 这个就是高频统计套利(high frequenc ...
- sublime使用以及快捷键
1.工程文件中的内容的查找替换 例: 想要把工程文件中的“山东”改为“云南”. 1)首先选中工程文件夹 2)右击出现下拉菜单,选择 find&replace 选项 3)出现在编辑框内输入要查找 ...
- [转载] 散列表(Hash Table)从理论到实用(上)
转载自:白话算法(6) 散列表(Hash Table)从理论到实用(上) 处理实际问题的一般数学方法是,首先提炼出问题的本质元素,然后把它看作一个比现实无限宽广的可能性系统,这个系统中的实质关系可以通 ...
- 在C代码中调用C++接口
一 在C源文件中调用C++封装的接口 例如: 要想在A.c文件中,调用生命在B.h,实现在B.cpp中的接口bool getMAC(char *mac_addr); 其实现方法 B.cpp 如下: / ...
- vim基础使用
vim的常用模式有分为命令模式,插入模式,可视模式,正常模式.本教程中,只需要用到正常模式和插入模式.二者间的切换即可以帮助你完成本指南的学习. 进入方法: vim xxx.xml 正常模式 正常模式 ...