React.createClass({
propTypes: {
// 验证布尔值
optionalBool: React.PropTypes.bool,
// 验证是一个函数
optionalFunc: React.PropTypes.func,
// 验证是数字
optionalNumber: React.PropTypes.number,
// 自定义验证器,验证失败需要返回一个 Error 对象。不要直接
// 使用 `console.warn` 或抛异常,因为这样 `oneOfType` 会失效。
customProp: function(props, propName, componentName) {
//自定义的验证方法
// 其它验证
/* 其它specification... */
propTypes使用示例(propTypes.html):
var App = React.createClass({
propTypes: {
site: React.PropTypes.shape({
domain: React.PropTypes.string.isRequired,
name: React.PropTypes.string
}).isRequired
render: function() {
return (
站点信息-{this.props.site.name}:{this.props.site.domain}
var site = {
name: 4, // 不合法的类型
domain: 'itbilu.com'
ReactDOM.render(
<App site={site} />,
document.getElementById('example')
// 运行后会抛出以下错误
// Warning: Failed propType: Invalid prop `site.name` of type `number` supplied to `App`, expected `string`.
2.5 静态方法对象:statics
object statics
statics对象使你可以定义一些静态方法,这些静态方法可以直接在组件上调用。如statics.html):
var MyComponent = React.createClass({
statics: {
customMethod: function(foo) {
return foo === 'bar';
render: function() {
MyComponent.customMethod('bar'); // true
在statics中定义的方法都是静态方法,所以你可以组件实例创建之前调用,这也意味着不能获取组件的 在这个块儿里面定义的方法都是静态的,意味着你可以在任何组件实例创建之前调用它们,这些方法不能获取组件的props和state,如果需要在静态方法中使用props和state,则要在调用时做为参数传入。
3. 定义组件的参数-生命周期
生命周期相关参数,是React定义组件时提供的一系列处理函数(钓子函数),这些函数会在组件生命周期的某个阶段调用。
3.1 创建期:getDefaultProps
object getDefaultProps()
3.2 创建期:getInitialState
object getInitialState()
在组件挂载前(即:创建期)调用一次,其返回值将做为this.state的初始值。
getInitialState()方法会组件类创建的时候调用一次,其返回值会被缓存下来。该方法用于设置props属性的默认值,但仅对于非必须属性。如果父组件没有指定props中的某个值,此返回对象中的相应属性将会合并到this.props。
getInitialState()方法会在组件实例创建前调用,这时还不能使用this.props属性,且其返回对象是在所有实例间共享的。
3.3 创建期:componentWillMount
componentWillMount()
componentWillMount()服务器端和客户端都只调用一次,在初始化渲染执行之前被调用。如果在这个方法内调用setState()方法,render()方法将会收到更新后的state,也就是说这是我做在组件渲染前最后一个修改state的机会。
3.4 创建期:componentDidMount
componentDidMount()
componentDidMount()会在组件初始化(渲染完成)后立即调用一次,我们一般在这个方法中使用this.getDOMNode()方法访问原始DOM。
3.5 存在期:componentWillReceiveProps
componentWillReceiveProps(object nextProps)
componentWillReceiveProps()方法会在组件生命周期的存在期调用,当组件感知到props属性改变会,会调用此方法。render()方法将会在其后调用,这时我们可以通过this.setState()来阻止组件的再次渲染。
3.6 存在期:shouldComponentUpdate
boolean shouldComponentUpdate(object nextProps, object nextState)
shouldComponentUpdate()方法发生在组件生命周期的存在器,在组件收到新的props或state。在这个方法中,我们可以访问组件的props和state属性,通过这两个属性可以确认组件是否需要更新,如果不需要更新,则返回false,则其后的方法将不会在执行。如:
shouldComponentUpdate: function(nextProps, nextState) {
return nextProps.id !== this.props.id;
3.7 存在期:componentWillUpdate
componentWillUpdate(object nextProps, object nextState)
componentWillUpdate()会在收到新的props或state后调用,类似componentWillMount()。
3.8 存在期:componentDidUpdate
componentDidUpdate(object prevProps, object prevState)
componentDidUpdate()会在组件重新渲染后立即被调用,当我们需要在组件重新渲染后操作DOM则需要使用这个方法。
3.9 销毁&清理期:componentWillUnmount
componentWillUnmount()
componentWillUnmount()是组件销毁&清理期唯一调用的方法,它会在组件从DOM中移除时被调用,这时我们可以清理一些状态或清理在componentDidMount中创建的DOM元素。
原文地址:http://itbilu.com/javascript/react/4JIk-Q7Yl.html使用React.createClass()方法创建组件时,需要传入一个参数对象,React会根据这个对象创建组件。这个参数对象中,除了包含必须要实现的render方法外,还有一些组件的设置属性。组件生命周期中的一些处理函数,也是在这个对象中定义的。组件的定义定
value ( Object ) - 要显示/编辑的对象。
onChange ( function(Object) ) - 每次更改时都会使用编辑过的对象调用回调。
editing ( Boolean ) - 如果为true ,则对象的属性将是可编辑的,并且可以添加新属性。
编辑器配置
可插入的自定义编辑器
麻省理工学院许可
1 组件的定义2 定义组件的参数
21 渲染组件render22 调试输出displayName23 跨组件共享mixins24 验证对象propTypes25 静态方法对象statics
3 定义组件的参数-生命周期
31 创建期getDefaultProps32 创建期getInitialState33 创建期com
import {Button, Text, View} from 'react-native';
import React, {Component} from 'react';
// import global from './Global'
import './Global.js';
export default class TabOne extends Componen
React组件自定义属性的定义及使用
在很多情况下,react组件中,需要使用自定义的属性。也经常需要在默认事件(如,点击onClick)中使用自定义属性。举一个很简单的例子,点击一个按钮,并显示这个按钮“自定义属性”中的string。
import React, { Component } from 'react';
export default MyButton extends Compo...
React 特点1.声明式设计 −React采用声明范式,可以轻松描述应用。
2.高效 −React通过对DOM的模拟(虚拟),最大限度地减少与DOM的交互。
3.灵活 −React可以与已知的库或框架很好地配合。
4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
5.组件 − 通过 React 构建组件,使得代码更加容易
实例属性:通过new出来的实例,访问到的属性。
在类中我们用static定义的就是静态属性,只能通过构造函数来进行调用,那么我们如果通过new出来的实例来进行调用我们的在类中通过static定义的属性会显示undefined
class Person{
constructor(name, age){
this.name = name;
this.age = age;
static
《一》、理解JSX JSX即Javascrpt XML— — 一种在React组件内部构建标签的类XML语法。
JSX并不是新语言,也没有改变JavaScript的语法,只是一种基于ECMAScript的新特性,一种定义带属性树结构(DOM结构)的语法
React 可以不使用 JSX 来编写组件,但是使用 JSX 可以让代码可读性更高、语义更清晰、对 React 元素进行抽象等等。一、
var concat=require("gulp-concat");
var webpack=require("gulp-webpack");
var react=require("react");