React-Native的组件容器和生命周期
组件特性
当我们创建一个组件类的时候,React会调用React.createClass()方法,这个时候我们需要提供一个渲染视图View的render()
方法,这个方法是必须的,当然,一个组件包含了很多其它的生命周期方法。
1 | 在创建组件的时候,我们可以使用传统的javascript,同时我们也可以使用[es6 classes] |
render
1 | ReactElement render() |
render()
是创建一个组件的必须方法,当它被调用时,它会检查this.props
和 this.stae
,并且会返回一个唯一的子元素。这个子元素可以是一个DOM元素(<div />
),也可以是一个React Dom元素(React.DOM.div()
),当然它还可以是其它任何你定义过的组件。
当然,你也可以返回null
或者false
只要你确定你不需要通过它们渲染视图。在可见视图的背后,我们会使用<noscript>
标记来进行版本算法的对比工作。当返回null
或者false
的时候,ReactDOM.findDOMNode(当前类)将返回null
。
render()
方法必须是纯净的
,意思是说,在这个方法内部我们不能修改组件的状态,它每次调用时都会返回state的原始状态,并且它不会从DOM当中读取或者修改取值,也不会与浏览器进行交互(比如,使用setTimeout
),如果你需要与浏览器交互,建议通过componentDidMount()
或者其它的组件生命周期方法来完成。保持render()
方法的简洁能使服务器能更好的加载数据,同时使业务逻辑更加清晰。
getInitialState
1 | object getInitialState() |
这个方法是在组件加载之前调用的,并且它只会被调用一次,这个方法返回的初始值用在this.state
当中。
getDefaultProps
1 | object getDefaultProps() |
这个方法会在类创建完成之后调用一次。如果这个prop在父类当中没有特殊处理(比如使用in
检查),mapping中的值会在this.props当中设置。
这个方法调用是在实例之前,因此不能依靠this.props。此外,需要注意的是,getDefaultProps返回的任何复杂对象将在实例中共享,不能复制。