ReactJS前端学习-组件生命周期

State & 生命周期

生命周期是组件加载的一个流程

  • 初始化组件
  • 渲染组件
  • 更新组件
  • 删除组件

参考 https://zh-hans.reactjs.org/docs/state-and-lifecycle.html#gatsby-focus-wrapper

 

研究组件的生命周期

  • mounting加载组件

       constructor() 构造器函数 初始化数据状态,比如state初始化

       render() 返回一个Virtual DOM

       componentDidMount() DOM节点插入之后调用的生命函数。组件挂载后(插入DOM树后)立即调用,网络请求来获取数据,数据状态更改

class App extends React.Component{
    constructor(){
        super();
        this.state={
            name:"alxor"
        }
        console.log("组件初始化...");
        this.click = this.click.bind(this);
    }
    //事件函数
    click(){
        this.setState({
            name:"hello alxor"
        });
    }
    componentDidMount(){
        console.log("DOM节点插入之后");
    }
    render(){
        console.log("render......");
        return (
            <div>
            <p>this.state.name</p>
            <button onClick = {this.click}></button>
            </div>
        )
    }
}
  • updating更新组件:当状态数据发生改变,会触发这个生命函数

class App extends React.Component{
    constructor(){
        super();
        this.state={
            name:"alxor"
        }
        console.log("组件初始化...");
    }
    componentDidMount(){
        console.log("DOM节点插入之后");
    }
    //组件更新之后会调用这个生命周期函数
    componentDidUpdate(){
        console.log("componentDidUpdate......");
    }
    render(){
        console.log("render......");
        return (
            <div>
            <p>this.state.name</p>
            </div>
        )
    }
}
  • unmounting 卸载组件

componentWillUnmount()组件在卸载之前会调用这个方法

ReactDOM.unmountComponentAtNode(container)

  • 用于卸载组件,参数就是插入组件的容器,dom对象是我们document.getElementById获取的根节点
class App extends React.Component{
    constructor(){
        super();
        this.state={
            name:"alxor"
        }
        console.log("组件初始化...");
    }
    componentDidMount(){
        console.log("DOM节点插入之后");
    }
    //组件更新之后会调用这个生命周期函数
    componentDidUpdate(){
        console.log("componentDidUpdate......");
    }
    componentWillUnmount(){
        console.log("componentWillUnmount()======");
    }
    render(){
        console.log("render......");
        return (
            <div>
            <p>this.state.name</p>
            <button onClick = {this.click}>点击更改state</button>
            <button onClick = {()=> {ReactDOM.unmount(ComponentAtNode(container))}>卸载组件</button>
            </div>
        )
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值