React Native学习笔记(三)组件生命周期
在React Native中使用组件来封装界面模块时,整个界面就是一个大的组件,开发过程就是不断优化和拆分界面组件、构造整个组件树的过程。 props:它是组件的不可变属性。组件自身定义了一组props作为对外提供的接口,展示一个组件时只需要指定props作为节点的属性。一般组件很少需要对外公开方法,唯一的交互途径就是props。所以说它也是父组件与子组件通信的桥梁。 class Menu extends Component {
constructor() {
super();
this.state = {
data: 'react native 组件生命周期学习',}
}
render() {
/* 返回一个根组件*/
return (
<MyListView
data = {this.state.data}
/>
);
}
}
子组件MyListView的定义如下: class MyListView extends Component {
props: {
data: String,}
render() {
return (
<View>
<Text>{this.props.data} </Text>
</View>
);
}
}
在上面的代码片段中,MyListView有一个props属性成员data。在父组件Menu中,通过节点属性的方式传值给子组件。 state:它是组件的内部状态属性,主要用来存储组件自身需要的数据。除了初始化时可能由props来决定,之后就完全由组件自身去维护。组件中由系统定义了setState方法,每次调用时都会更新组件的状态,触发render方法。需要注意的是render方法是被异步调用的,这可以保证同步的多个setState方法只会触发一次render,这样做是有利于提高性能的。 class ListItem extends Component {
state: {
/* 点赞数*/
likeNum: number,}
componentWillMount() {
this.state = {
likeNum: 0,}
}
render() {
return (
<View >
<TouchableHighlight onPress = {() => this._onPressImage(this.state.likeNum)}>
<Image
source = {require('./img/hand@2x.png')}
/>
</TouchableHighlight>
<Text > {this.state.likeNum}</Text>
</View>
);
}
_onPressImage(likeNumd: number) {
this.setState({
likeNum: (likeNumd + 1),});
}
}
在这个代码片段中,定义了一个state属性(likeNum)。当点击Image的时候,触发了_onPressImage方法。在该方法中通过调用系统的setState方法修改state的值。当修改完以后,系统就会自动触发render方法,从而完成界面的重新渲染。
static defaultProps = {
iconName: '',};
static propTypes = {
iconName: React.PropTypes.string.isRequired,};
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |