美文网首页
react生命周期第二阶段更新阶段

react生命周期第二阶段更新阶段

作者: 少__年 | 来源:发表于2019-03-15 22:19 被阅读0次
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>lifeCycle</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
</head>

<body>
    <div id="app"></div>
    <script src="../node_modules/babel-standalone/babel.js"></script>
    <script src="../node_modules/react/umd/react.development.js"></script>
    <script src="../node_modules/react-dom/umd/react-dom.development.js"></script>
    <script type="text/babel">

        class List extends React.Component {
            constructor() {
                super(...arguments);
                // 构造只执行一次
                this.state = {
                    list: '这是list数据',
                    adasdafd: this.props.title
                }
                // console.log( this.props )
                console.log( '02-构造函数01' )
            }

            componentWillReceiveProps(nextProps) {
                console.log('02-获取父组件更新的时候带来的数据02 ',nextProps)
                /*this.setState({
                    adasdafd: nextProps.title
                })*/
            }

            shouldComponentUpdate(nextProps, nextState) { // 是否更新组件

                console.log('02-是否将来更新组件03')
                //console.log( nextProps,nextState )
                if( this.state.adasdafd !== nextProps.title ){
                    this.setState({
                        adasdafd: nextProps.title
                    })
                }

                setTimeout(()=>{
                    // console.log(this.state.adasdafd) // 当前组件的数据是 更新了 但是false是不渲染
                },2000)
                return true
                // true 是 更新 执行render函数 重新渲染
                // false 否 不更新  不执行render函数  不重新渲染
            }

            componentWillUpdate(nextProps, nextState) {
                console.log('02-组件即将被更新04', nextProps, nextState )
                // 更新的问题 执行render函数 才能更新
                // 看自己的需求
            }

            render() {
                console.log('02-渲染组件05')
                return (
                    <div>
                        <h2> 这是List组件 </h2>
                        {
                            // 当前组件 维护当前组件的 数据(状态)
                            // this.props.title
                            this.state.adasdafd
                        }
                    </div>
                );
            }
            componentDidUpdate(prevProps, prevState) {
                console.log( '02-组件更新完成啦06', prevProps,prevState )
            }

            componentWillUnmount() {
                // 相当于 当关闭网页的时候 要执行什么处理的原理
                console.log('03-List组件即将被销毁07')
                window.localStorage.setItem('componentWillUnmount','List组件销毁啦!!!!')
            }
        }

        class App extends React.Component{
            constructor(props) {
                super(props);
                this.state = {
                    p: 'App',
                    onOff: true
                }
                console.log( '01-构造函数1 ' )
            }
            componentWillMount() {
                console.log('01-组件即将被挂载2')
            }
            componentDidMount() {
                console.log('01-组件挂载完成啦4')
            }
            handleClick = ()=>{
                this.setState({
                    p: '点击事件改变了App的数据'
                })
            }
            destory = ()=>{
                let onOff = !this.state.onOff
                this.setState({
                    onOff
                })
            }
            render() {
                console.log( '01-开始渲染组件3' )
                return (
                    <div>
                        <h1>App</h1>
                        {
                            this.state.onOff?<List title={this.state.p}></List>:''
                        }
                        {
                            this.state.onOff && <List title={this.state.p}></List>
                        }
                        <br />
                        <button onClick={this.handleClick}>点击事件</button>
                        <br/>
                        <br/>
                        <br/>

                        <input type="button" defaultValue="销毁List组件" onClick={this.destory} />
                    </div>
                );
            }



        }
        ReactDOM.render(
            <App></App>,
            document.querySelector('#app')
        )

    </script>
</body>

</html>

以上内容仅供本人做笔记使用

相关文章

  • React组建的生命周期

    React 生命周期 React生命周期主要包括4个阶段: 初始化阶段 实例化阶段 更新阶段 销毁阶段 1 设置组...

  • React生命周期解析

    React生命周期主要会经历这4个阶段:创建阶段、实例化阶段、更新阶段、销毁阶段 调用 React.createC...

  • React生命周期

    React生命周期三个阶段 装载阶段(Mounting):构建并插入真实DOM 更新阶段(Updating):更新...

  • React组件的生命周期

    React组件生命周期4个阶段:创建阶段、实例化阶段、更新阶段、销毁阶段 【创建阶段】● getDefaultPr...

  • React中类组件与函数组件

    类组件 React 16.8+的生命周期分为三个阶段,分别是挂载阶段、更新阶段、卸载阶段。 react16之后有三...

  • React组件的生命周期简介

    1.生命周期概述: React生命周期简单描述,大体上可分为以下4个阶段,初始阶段、挂载阶段、更新阶段和移...

  • 朗朗上口的react 生命周期(下)update(更新)

    有关出生阶段请参考上一篇《深入React的生命周期(上):出生阶段(Mount)》 更新阶段 componentW...

  • React生命周期:

    React 的生命周期包括三个阶段:mount(挂载)、update(更新)和 unmount(移除) mount...

  • react生命周期第二阶段更新阶段

    以上内容仅供本人做笔记使用

  • react 经典面试题

    1、react生命周期及相关用法 react的生命周期分为初始化阶段、运行阶段、销毁阶段。(1)初始化阶段 (2)...

网友评论

      本文标题:react生命周期第二阶段更新阶段

      本文链接:https://www.haomeiwen.com/subject/xkedmqtx.html