JSX语言 允许HTML 与JavaScript 混写。 遇到 HTML 标签(以 < 开头),就用 HTML 规则解析;遇到代码块(以 {开头),就用 JavaScript 规则解析。
ReactDOM.render 是React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。
Copy ReactDOM . render (
< h1 > Hello, world! </ h1 >,
document . getElementById ( ' example ' )
) ; React 允许将代码封装成组件(component),然后像插入普通HTML 标签一样,在网页中插入这个组件。
React.createClass 方法就用于生成一个组件类。
Copy var HelloMessage = React . createClass ( {
render : function () {
return < h1 > Hello { this . props . name } </ h1 >;
}
} ) ;
ReactDOM . render (
< HelloMessage name = " John " />,
document . getElementById ( ' example ' )
) ; React.Component 生成一个组件类
这是ES6的方法。 http://www.peachis.me/react-createclass-versus-extends-react-component/arrow-up-right
组件类的第一个字母必须大写,否则会报错。
组件类只能包括一个顶层标签。
可以通过this.props读取组件类上的属性值。
注意:使用className表示class,htmlFor表示for;
this.state
getInitialState:定义了初始状态; this.state:可以读取初始状态的对象的属性值; this.setState:修改状态值; this.render:每次修改状态值都会调用这个方法;
this.props 表示那些一旦定义,就不再改变的特性,而 this.state是会随着用户互动而产生变化的特性。
表单
this.props.value不能读取文本框输入的内容,但可以通过event.target.value读取。
组件生命周期
React 为每个状态都提供了两种处理函数,will 函数在进入状态之前调用,did 函数在进入状态之后调用,三种状态共计五种处理函数。
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object prevProps, object prevState)
hello组件加载后,通过componentDidMount方法设置一个定时器,从而引发重新渲染。
组件属性值应该写成:
第一重大括号表示这是 JavaScript 语法,第二重大括号表示样式对象。
Ajax
数据可以通过componentDidMount设置Ajax 请求等到,等到成功后,可以用this.setState重新渲染UI。
http://www.ruanyifeng.com/blog/2015/03/react.htmlarrow-up-right
可以声明 prop 为指定的 JS 基本数据类型,默认情况,这些数据是可选的:
optionalArray: React.PropTypes.array,
optionalBool: React.PropTypes.bool,
optionalFunc: React.PropTypes.func,
optionalNumber: React.PropTypes.number,
optionalObject: React.PropTypes.object,
optionalString: React.PropTypes.string,
ref可以绑定在render()输出的任何组件上,允许用户引用render()返回相应的支撑实例。
上面代码的 NoteList 组件有两个 span 子节点,它们都可以通过 this.props.children 读取。
会以列表展开数据。