zoukankan      html  css  js  c++  java
  • react的生命周期函数

    先来了解一下react的生命周期函数有哪些:

    组件将要挂载时触发的函数:componentWillMount
    组件挂载完成时触发的函数:componentDidMount
    是否要更新数据时触发的函数:shouldComponentUpdate
    将要更新数据时触发的函数:componentWillUpdate
    数据更新完成时触发的函数:componentDidUpdate
    组件将要销毁时触发的函数:componentWillUnmount
    父组件中改变了props传值时触发的函数:componentWillReceiveProps

    一.挂载部分
    根据官方生命周期图我们可以看到,一个组件的加载渲染,首先是defaultProps和propsTypes,(这两个是什么下一篇会单独说,这里也不是重点)
    然后就是constructor及this.state里的初始数据,所以到这里是第一步。接着就是componentWillMount 组件将要开始挂载了,这是第二步。然后组件挂载,render解析渲染,所以第三步呼之欲出,就是render数据都渲染完成,最后componentDidMount
    组件挂载完成。
    子组件代码,父组件内引入渲染即可

    import React, { Component } from 'react'

    class Smzq extends Component {
        constructor(props) {
            super(props)
            this.state = {
                msg: '我是一个msg数据'
            }
        }
        //组件将要挂载时候触发的生命周期函数
        componentWillMount() {
            console.log('02组件将要挂载')
        }
        //组件挂载完成时候触发的生命周期函数
        componentDidMount() {
            //Dom操作,请求数据放在这个里面
            console.log('04组件挂载完成')
        }
        //是否要更新数据,如果返回true才会更新数据
        shouldComponentUpdate(nextProps, nextState) {
            console.log('01是否要更新数据')
            console.log(nextProps)      //父组件传给子组件的值,这里没有会显示空
            console.log(nextState)      //数据更新后的值
            return true;                //返回true,确认更新
        }
        //将要更新数据的时候触发的
        componentWillUpdate() {
            console.log('02组件将要更新')
        }
        //更新数据时候触发的生命周期函数
        componentDidUpdate() {
            console.log('04组件更新完成')
        }
        //你在父组件里面改变props传值的时候触发的函数
        componentWillReceiveProps() {
            console.log('父子组件传值,父组件里面改变了props的值触发的方法')
        }
        setMsg() {
            this.setState({
                msg: '我是改变后的msg数据'
            })
        }
        //组件将要销毁的时候触发的生命周期函数,用在组件销毁的时候执行操作
        componentWillUnmount() {
            console.log('组件销毁了')
        }
        render() {
            console.log('03数据渲染render')
            return (
                <div>
                    生命周期函数演示--{this.state.msg}--{this.props.title}
                    <br />
                    <hr />
                    <button onClick={() => this.setMsg()}>更新msg的数据</button>
                </div>
            )
        }
    }
    export default Smzq
    父组件代码:
    import React, { Component } from 'react';
    import Smzq from './data2/datachange'

    class App extends Component {
        constructor(props){
            super(props)
            this.state={
                flag:true,
                title:"我是app组件的标题"
            }
        }
        //创建/销毁组件
        setFlag(){
            this.setState({
                flag:!this.state.flag
            })
        }
        //改变title
        setTitle(){
            this.setState({
                title:'我是app组件改变后的title'
            })
        }
        render() {
            return (
              <div className="App">
                    {
                        this.state.flag?<Smzq title={this.state.title}/>:''
                    }
                    <button onClick={()=>this.setFlag()}>挂载/销毁生命周期函数组件</button>
                    <button onClick={()=>this.setTitle()}>改变app组件的title</button>
              </div>
            );
        }
    }
    export default App;
     
    文章摘自 https://blog.csdn.net/weixin_43851769/article/details/88188325
  • 相关阅读:
    less的使用
    04 LeetCode --- 反转整数
    03 LeetCode --- 反转整数
    数据结构--- 队列
    数据结构---栈
    数据结构---列表与数组
    04-配置阿里云yum源并启动nginx服务
    03-linux命令
    02-windows下vmware配置nat网络
    01-xshell连接linux
  • 原文地址:https://www.cnblogs.com/zhx119/p/14653558.html
Copyright © 2011-2022 走看看