- 在es6写法中,初始化props不再用
getDefaultProps
方法,而应该使用
static defaultProps {
xxx: 'xxx'
}
- 在es6写法中,初始化state不再用
getInitialState
方法,而应该使用
constructor(props) {
super(props);
this.state = {xxx: 'xxx'};
//在这里可以定义一些你自己需要的属性
}
组件可以不继承component,但是无法使用生命周期函数。可以使用render()方法。
-
关于constructor()方法
react文档中的这段话的意思是说如果你不实现constructor方法的话,你就无法使用this.props对象,而且你得在constructor中最先调用super(props)。如果你不需要在constructor中初始化state,那么你完全可以不实现constructor方法。
flex布局中为什么ajustifyContent设置的属性不生效?因为包裹容器的View需要设置height属性才会生效。
在mixin中写的生命周期相关的回调都会被合并,也就是他们都会执行,而不会互相覆盖掉。
比如 你在mixin中可以定义 componentDidMount 来初始化组件,他不会覆盖掉使用这个mixin的组件。实际执行的时候,会先执行 mixin 的 componentDidMount ,最后执行组件的 componentDidMount 方法。
需要注意的是,因为mixin的作用是抽离公共功能,不存在渲染dom的需要,所以它没有render方法。如果你定义了render方法,那么他会和组件的render方法冲突而报错。
同样,mixin不应该污染state,所以他也没有 setState 方法。mixin应该只提供接口(即方法),不应该提供任何属性。mixin内部的属性最好是通过闭包的形式作为私有变量存在。在任何模块文件内部,可以使用__dirname变量获取当前模块文件所在目录的完整绝对路径。
react自定义的组件名需要大写,否则无法解析。