React(3)生命周期

生命周期流程:

1.第一次进入初始化渲染显示:render()

  • constructor():创建对象初始化state
  • componentWillMount():将要插入回调
  • render():用于插入虚拟DOM回调
  • componentDidMount():已经插入回调

2.每次更新state: this.setState()

  • componentWilIUpdate():将要更新回调
  • render():更新(重新渲染)
  • componentDidUpdate():已经更新回调

3.删除组件

  • ReactDOM.unmountComponentAtNode(document.getElementById(‘example’))
  • componentWillUnmount()组件将要被移除回调

在这里插入图片描述
栗子:

/*
  需求: 自定义组件
    1. 让指定的文本做显示/隐藏的动画
    2. 切换时间为2S
    3. 点击按钮从界面中移除组件界面
   */
   class Animation extends React.Component{
     constructor(props){
       super(props)
       this.state = {
         opacity: 1
       }
     }
     componentDidMount(){
       let {opacity} = this.state
       setInterval(() => {
        if(opacity*10 >0){
          opacity -= 0.1
        } else {
          opacity = 1
        }
        this.setState({opacity})
       }, 500)
     }
     render(){
       let opacity = this.state.opacity
       return(
         <div style={{opacity}}>
          gogoogogogogogogogog
         </div>
       )
     }
   }
   ReactDOM.render(<Animation/>, document.getElementById('example'))

Diff算法

最小化页面重绘
会比较变化前后的变化部分,比较出来哪部分,就渲染那部分,其他没变化的部分就不会渲染

这里案例出现了点问题

这个不能像以前那么写了会报错<a href="javascript:;"
在react中必须这样写
在这里插入图片描述
还有别忘记了,这里prop传值,它不是解构赋值,写好名字
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值