Open YutHelloWorld opened 7 years ago
这里贴一张React组件生命周期图
counstruct
方法的作用:设置初始state或者绑定方法,在其他任何表达式前应调用super(props)
constructor(props) {
super(props);
this.state = {
color: props.initialColor
};
this.logger.bind(this)
}
logger () {
console.log('hello world')
}
super(props)
:super
方法提供this
给其他表达式引用,提供props
给其他表达式调用。
this.logger.bind(this)
用来绑定this
。可用箭头函数结合ES7的静态属性替代
logger = () => {
console.log('hello')
}
commentDidMount
方法内可以设置state,触发组件更新重渲。
Our Best Practices for Writing React Components . React组件的最佳实践译文 #7
React数据向上和向下传递
React
JSX
在 JSX 中使用表达式
你可以任意地在 JSX 当中使用 JavaScript 表达式,在 JSX 当中的表达式要包含在大括号里。
JSX 嵌套
如果 JSX 标签是闭合式的,那么你需要在结尾处用 />, 就好像 XML/HTML 一样:
互相嵌套
className
class
是保留词,所以添加样式时,需用className
代替class
。Mapping Arrays to JSX
React组件3种形式
分别是 React.createClass, class 和 Stateless Functional Component(无状态组件)。推荐尽量使用最后一种,保持简洁和无状态。这是函数,不是 Object,没有 this 作用域,是 pure function。
createClass
createClass写法是React官方反对的,会在React v15.*短期保留,在v16.0版本会被移除。
stateless function
class
PropTypes
使用PropTypes检查props
ES6写法
ES 试验特性写法:
static
是类的静态属性,不会被实例继承State
initialState的设定应放在constructor中
也可以按照ES 试验特性写法
destructuring & spread attributes