React 函数生命周期
React 函数生命周期基础
1 ,概念
- 在组件创建、到加载到页面上运行、以及组件被销毁的过程中,总是伴随着各种各样的事件,这些在组件特定时期,触发的事件,统称为组件的生命周期;* 
2,组件生命周期分为三部分
1,在组件创建阶段
组件创建阶段的生命周期函数,有一个显著的特点:创建阶段生命周期函数在组件的一辈子中,只执行一次;
2,组件运行阶段
也有一个显著的特点,根据组件的state和props的改变,有选择性的触发0次或多次;
3,组件销毁阶段
也有一个显著的特点,一辈子只执行一次;
在程序运行的过程中,会自动执行的函数,被称为生命周期函数
记住常用的生命周期方法:
加载期
constructor()
componentWillMount()
render()
componentDidMount()
更新期
componentWilUpdate()
render()
componentDidUpdate()
3,案例部分
 import React, { Component } from 'react'
 export class Demo extends Component {
     // 初始化数据
     constructor(props){
         super();
         console.log('construtor....在这里初始化数据')
         this.state = {
             list:[],//从数据库获取的数据
             num:0,
             isStart:false
         }
     }
     // 获取数据库数据
     componentWillMount(){
         console.log('componentWillMount....在这里使用Ajax获取数据');
     }
     // 向页面渲染数据
     render() {
         console.log('render....在这里生成DOM');
         return (
             <div>
                 <h3>数据展示:</h3>
                 <p>
                 <input type='checkbox' onChange={this.change.bind(this)} />
                 按钮是否可用
                 </p>
                 <button onClick={this.click.bind(this)}>更新数据</button>
                 <p>数据:{this.state.num}</p>
             </div>
         )
     }
     // 渲染后执行
     componentDidMount(){
         console.log('componentDidMount....向DOM中渲染数据');
     }
     //复选框点击事件
     change(e){
         this.setState({
             isStart:e.target.checked
         })
     }
     //按钮点击事件
     click(){
         console.log('更新数据....')
         let i = this.state.num;
         i++;
         this.setState({
             num:i
         });
     }
     // 判断是否更新state数据
     shouldComponentUpdate(){
         return this.state.isStart;
     }
     // 在组件接收到新的props或者state但还没有render时被调用
     componentWillUpdate(){
         console.log('componentWillUpdate....');
     }
     // 在组件完成更新后立即调用
     componentDidUpdate(){
         console.log('componentDidUpdate.....');
     }
 }
 export default Demo
React 函数生命周期的更多相关文章
- React的生命周期
		我们先来看一张图,其实看完这张图基本就懂了,如果还不懂,请继续往下看. getDefaultProps 执行过一次后,被创建的类会有缓存,映射的值会存在this.props,前提是这个prop不是父组 ... 
- 附实例!图解React的生命周期及执行顺序
		本文由云+社区发表 作者:前端林子 1.七个可选的生命周期 可以结合下图来看: (1) componentWillMount() 仅在render()方法前被调用一次,如果在该方法中调用了setSta ... 
- React之生命周期
		哈喽,这是我的第一篇博客,请大家多多关照~ 追根溯源:What's the lifeCycle? 生命周期函数指在某一时刻组件会自动调用执行的函数: React生命周期概览: 接下来我们就着生命周期的 ... 
- React组件生命周期小结
		React组件生命周期小结 下面所写的,只适合前端的React.(React也支持后端渲染,而且和前端有点小区别,不过我没用过.) 相关函数 简单地说,React Component通过其定义的几个函 ... 
- React—组件生命周期详解
		React—组件生命周期详解 转自 明明的博客 http://blog.csdn.net/slandove/article/details/50748473 (非原创) 版权声明:转载请注明出处,欢 ... 
- 帮你理清React的生命周期
		这是一个从印记中文 | react官方文档提取总结的,算是帮自己理清并且强化记忆React的生命周期,以便以后编写组件的时候能够有更清晰的思路.本文如有纰漏,欢迎指正 整体上来讲,React生命周期分 ... 
- 七天接手react项目 —— 生命周期&受控和非受控组件&Dom 元素&Diffing 算法
		生命周期&受控和非受控组件&Dom 元素&Diffing 算法 生命周期 首先回忆一下 vue 中的生命周期: vue 对外提供了生命周期的钩子函数,允许我们在 vue 的各个 ... 
- react.js 生命周期componentDidUpdate的另类用法:防止页面过渡刷新
		场景:数据新增成功之后,需要返回原来的查询表,这时候的查询,需要使用react的生命周期:componentDidUpdate componentDidUpdate() 这个生命周期的作用是当prop ... 
- 野心勃勃的React组件生命周期
		当你还在写着Angular指令,过滤器,注入,服务,提供者,视图模版的时候,是不是觉得很烦,好在这个时候,React已经神一样的出现在历史舞台. React组件 React实现了UI=Fn(St ... 
随机推荐
- 小白进阶之路-python与用户交互
			在python3中input会将用户输入的任何内容都存成字符串类型. 
- spring整合springMVC、mybatis、shiro
			jar包: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding& ... 
- 【题解】CF741D(DSU on TREE)
			[题解]CF741D(DSU on TREE) 写一写这道题来学习学习模板 用二进制来转换一下条件,现在就是要求一下\(lowbit(x)=x\)的那些路径了. DSU on TREE 是这样一种算法 ... 
- 洛谷$P1712\ [NOI2016]$区间 线段树
			正解:线段树 解题报告: 传送门$QwQ$ $umm$很久以前做的了来补个题解$QwQ$ 考虑给每个区间按权值($r-l$从大往小排序,依次加入,然后考虑如果有一个位置被覆盖次数等于$m$了就可以把权 ... 
- 洛谷$P1935$ [国家集训队]圈地计划 网络流
			正解:最小割 解题报告: 传送门 就文理分科模型嘛$QwQ$?所以就,跑个最小割呗,然后就做完辣?仔细想想细节发现并麻油那么简单嗷$QwQ$ 先考虑如果没有这个$k\cdot C_{i,j}$的贡献就 ... 
- 安装Docker Machine
			什么是Docker Machine Docker Machine是Docker官方编排项目之一,由Go语言实现,负责在多种平台上快速安装Docker环境,Github项目主页 它支持Linux.Mac ... 
- HDFS的HA集群原理分析
			1.简单hdfs集群中存在的问题 不能存在两个NameNode 单节点问题 单节点故障转移 2.解决单节点问题 找额外一个NameNode备份原有的数据 会出现脑裂 脑裂:一个集群中多个管理者数据 ... 
- Java网络编程——TCP图片上传
			1.编写一个服务器端程序,用来接收图片.创建一个监听指定端口号的ServerSocket服务端对象,在while(true)无限循环中持续调用ServerSocket的accept()方法来接收客户端 ... 
- ssh免密登陆和加密解密
			一 丶实现无密码的远程管理 1.生成公钥 私钥 [root@room9pc14 桌面]# ssh-keygen [root@room9pc14 桌面]# ls /root/.ssh/ 2.上传公钥到虚 ... 
- DNS自述:我是如何为域名找到家的
			对于互联网一代的我们,一出生就学会使用电脑.当我们对着浏览器地址栏输入www.baidu.com的时候,百度的首页就出现在面前.但你可曾想过,为什么我们输入www.baidu.com就可以弹出百度首页 ... 
