react-native 生命周期

 1 import React, { Component } from ‘react‘;
 2 import {
 3   AppRegistry,
 4   StyleSheet,
 5   Text,
 6   View
 7 } from ‘react-native‘;
 8
 9 export default class mykblearn extends Component {
10    constructor(props){
11         super(props)
12         this.state={times:0}
13     }
14     timePlus(){
15         let times=this.state.times
16         times++  //times+1
17         this.setState({
18             times:times  //times变为新的times
19         })
20     }
21     componentWillMount(){
22       console.log(‘componentWillMount‘)
23     }
24     componentDidMount(){
25       console.log(‘componenDidMount‘)  //加载完就显示componentWillMount,render,componenDidMount这三个
26     }
27     shouldComponentUpdate(){
28       console.log(‘shouldComponentUpdate‘)
29       return true
30     }
31     componentWillUpdate(){
32       console.log(‘componentWillUpdate‘)
33     }
34     componentDidUpdate(){
35       console.log(‘componentDidUpdate‘) //点击一次后更新组件,控制台显示shouldComponentUpdate,componentWillUpdate,render,componentDidUpdate这四个
36     }
37
38   render() {
39     console.log(‘render‘)
40     return (
41       <View style={styles.container}>
42         <Text style={styles.welcome} onPress={this.timePlus.bind(this)}>
43           点击我
44         </Text>
45         <Text style={styles.instructions}>
46          你点击了{this.state.times}次
47         </Text>
48       </View>
49     );
50   }
51 }
52
53 const styles = StyleSheet.create({
54   container: {
55     flex: 1,
56     justifyContent: ‘center‘,
57     alignItems: ‘center‘,
58     backgroundColor: ‘#F5FCFF‘,
59   },
60   welcome: {
61     fontSize: 20,
62     textAlign: ‘center‘,
63     margin: 10,
64   },
65   instructions: {
66     marginTop:100,
67     textAlign: ‘center‘,
68     color: ‘#333333‘,
69     marginBottom: 5,
70   },
71 });
72
73 AppRegistry.registerComponent(‘mykblearn‘, () => mykblearn);

父子组件间通信的生命周期:

  1 import React, { Component } from ‘react‘;
  2 import {
  3   AppRegistry,
  4   StyleSheet,
  5   Text,
  6   View
  7 } from ‘react-native‘;
  8
  9 var Son =React.createClass( {
 10    getDefaultProps(){
 11      console.log(‘child‘,‘getDefaultProps‘)
 12    },
 13    getInitialState(){
 14      console.log(‘child‘,‘getInitialState‘)
 15      return{
 16        times:this.props.times
 17      }
 18    },
 19     timesPlus(){
 20         let times=this.state.times
 21         times++
 22         this.setState({
 23             times:times
 24         })
 25     },
 26     componentWillMount(){
 27       console.log(‘child‘,‘componentWillMount‘)
 28     },
 29     componentDidMount(){
 30       console.log(‘child‘,‘componenDidMount‘)
 31     },
 32     componentWillReceiveProps(props){
 33       console.log(this.props)
 34       console.log(‘child‘,‘componentWillReceiveProps‘)
 35       this.setState({
 36         times:props.times
 37       })
 38     },
 39     componentWillUpdate(){
 40       console.log(‘child‘,‘componentWillUpdate‘)
 41     },
 42     componentDidUpdate(){
 43       console.log(‘child‘,‘componentDidUpdate‘)
 44     },
 45     timesReset(){
 46       this.props.timesReset()
 47     },
 48   render() {
 49     console.log(‘child‘,‘render‘)
 50     return (
 51       <View style={styles.container}>
 52         <Text style={styles.welcome} onPress={this.timesPlus}>
 53           儿子:有本事揍我啊!
 54         </Text>
 55         <Text style={styles.instructions}>
 56          你居然揍我{this.state.times}次
 57         </Text>
 58          <Text style={styles.instructions} onPress={this.timesReset}>
 59         信不信我亲亲你
 60         </Text>
 61       </View>
 62     );
 63   }
 64 })
 65
 66
 67 var mykblearn =React.createClass( {
 68    getDefaultProps(){
 69      console.log(‘father‘,‘getDefaultProps‘)
 70    },
 71    getInitialState(){
 72      console.log(‘father‘,‘getInitialState‘)
 73      return{
 74        hit:false,
 75        times:2
 76      }
 77    },
 78
 79     componentWillMount(){
 80       console.log(‘father‘,‘componentWillMount‘)
 81     },
 82     componentDidMount(){
 83       console.log(‘father‘,‘componenDidMount‘)
 84     },
 85     shouldComponentUpdate(){
 86       console.log(‘father‘,‘shouldComponentUpdate‘)
 87       return true
 88     },
 89     componentWillUpdate(){
 90       console.log(‘father‘,‘componentWillUpdate‘)
 91     },
 92     componentDidUpdate(){
 93       console.log(‘father‘,‘componentDidUpdate‘)
 94     },
 95     timesReset(){
 96       this.setState({
 97         times:0
 98       })
 99     },
100     willHit(){
101       this.setState({
102         hit:!this.state.hit
103       })
104     },
105      timesPlus(){
106         let times=this.state.times
107         times+=3
108         this.setState({
109             times:times
110         })
111     },
112   render() {
113     console.log(‘father‘,‘render‘)
114     return (
115       <View style={styles.container}>
116       {this.state.hit ?
117         <Son times={this.state.times} timesReset={this.timesReset}/>
118         : null}
119         <Text style={styles.welcome} onPress={this.timesReset}>
120           老子说:心情好就放你一马
121         </Text>
122         <Text style={styles.instructions} onPress={this.willHit} >
123          到底揍不揍
124         </Text>
125         <Text style={styles.instructions}  >
126          就揍了你{this.state.times}次而已
127         </Text>
128         <Text style={styles.instructions} onPress={this.timesPlus} >
129          不听话,再揍你3次
130         </Text>
131       </View>
132     );
133   }
134 })
135
136 var styles = StyleSheet.create({
137   container: {
138     flex: 1,
139     justifyContent: ‘center‘,
140     alignItems: ‘center‘,
141     backgroundColor: ‘#F5FCFF‘,
142   },
143   welcome: {
144     fontSize: 20,
145     textAlign: ‘center‘,
146     margin: 10,
147   },
148   instructions: {150     149     textAlign: ‘center‘,
151     color: ‘#333333‘,
152     marginBottom: 5,
153   },
154 });
155
156 AppRegistry.registerComponent(‘mykblearn‘, () => mykblearn);

如果74行的hit:true,一开始就加载子组件,则reload后显示:

如果74行的hit:false,则reload后显示:

点一下“到底揍不揍”后:

再点一下“不听话,再揍你3次”,控制台显示红色部分

再点一下“信不信我亲亲你”

再点“不听话,再揍你3次”

再揍3次

再揍3次

点一下“有本事揍我啊”

时间: 2024-10-14 00:58:42

react-native 生命周期的相关文章

关于React的生命周期

React 的主要思想是通过构建可复用组件来构建用户界面.所谓组件其实就是 有限状态机,通过状态渲染对应的界面,且每个组件都有自己的生命周期,它规定了组件的状态和方法需要在哪个阶段进行改变和执行.有限状态机(FSM),表示有限个状态以及在这些状态之间的转移和动作等行为的模型.一般通过状态.事件.转换和动作来描述有限状态机.React 通过管理状态来实现对组件的管理. 虽然组件.状态机.生命周期这三者都不是 React 独创,如果熟悉 Web Components 标准,它与其中的自定义组件的生命

React组件生命周期小结

转载自:http://www.jianshu.com/p/4784216b8194 下面所写的,只适合前端的React.(React也支持后端渲染,而且和前端有点小区别,不过我没用过.) 相关函数 简单地说,React Component通过其定义的几个函数来控制组件在生命周期的各个阶段的动作. 在ES6中,一个React组件是用一个class来表示的(具体可以参考官方文档),如下: // 定义一个TodoList的React组件,通过继承React.Component来实现 class Tod

React—组件生命周期详解

React-组件生命周期详解 转自 明明的博客  http://blog.csdn.net/slandove/article/details/50748473 (非原创) 版权声明:转载请注明出处,欢迎加入QQ群(115402375)讨论!博客编写已经转移到http://blog.csdn.net/limm33 在组件的整个生命周期中,随着该组件的props或者state发生改变,它的DOM表现也将有相应的改变,一个组件就是一个状态机,对于特定的输入,它总会返回一致的输出. React为每个组件

react.js 生命周期componentDidUpdate的另类用法:防止页面过渡刷新

场景:数据新增成功之后,需要返回原来的查询表,这时候的查询,需要使用react的生命周期:componentDidUpdate componentDidUpdate() 这个生命周期的作用是当props或state更新之后,使用它更新DOM节点.如果使用不当,则查询页面会不停的调用查询的方法,不停的执行刷新操作.因此,需要给新增的方法增加一个标志,通过这个标志,判断,如果新增成功,则调用一次查询方法,否则,则不调用. 这个标志,通常在 2 个位置使用: 1. action的 新增 方法中: 2.

react的生命周期

什么是声明周期?组件本质上就是状态机,输入确定,输出一定确定.如何理解这一点?react有两个特点,第一个就是去除了所有的手动dom操作,也就是使用jsx.第二个就是组件把状态和结果一一对应起来,从而能够直观的看出来,程序在不同的状态是的输出.属性是由父组件传递给子组件的,状态是子组件内部维护的一些数据,当状态发生变化时候,组件也会进行更新,因此我们可以理解成一个state对应一个render的结果,这样我们就可以知道在不同的state下,组件会render出什么样的结果,从而就知道组件在页面上

React组件生命周期过程说明【转】

实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWillUpdate render com

【07】react 之 生命周期

阅读目录(Content) 实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 存在期 componentWillReceiveProps shouldComponentUpdate componentWillUpdate componentDidUpdate 销毁时 componentWillUnmount 反模式 上篇博文使用React开发的一些注意要点对React开发的一些重点进行了

React js生命周期

文章来源:React:组件的生命周期 另来源于幕课网课程<React入门>

React组件生命周期过程说明

实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWillUpdate render com

react组件生命周期过程

来自kiinlam github 实例化 首次实例化 getDefaultProps getInitialState componentWillMount render componentDidMount 实例化完成后的更新 getInitialState componentWillMount render componentDidMount 存在期 组件已存在时的状态改变 componentWillReceiveProps shouldComponentUpdate componentWill