首页 > 其他分享 >简单定义一个生命周期

简单定义一个生命周期

时间:2022-09-07 14:12:20浏览次数:69  
标签:生命周期 const log shouldStateUpdate state 简单 console 定义

简单定义一个拥有create,willStateUpdate和shouldStateUpdate三个类似生命周期的类,名字随意,不要介意

class State {
  constructor() {
    this.state = { hehe: "9" };
    //第一次调用
    this.created(this.state);
  }
  setState(newValue) {
    //调用生命周期
    this.willStateUpdate(newValue);
    const upDate = this.shouldStateUpdate(newValue);
    if (upDate) {
      const preValue = this.state;
      this.state = {
        ...preValue,
        ...newValue,
      };
    } else {
      console.log("没有数据改变");
    }
  }

  //定义生命周期
  willStateUpdate() {
    // 默认啥也不做
  }
  shouldStateUpdate() {
    // 默认返回true,一直都是更新
    return true;
  }
}
//子类继承父类,对方法具体实现
class User extends State {
  created() {
    console.log("我是创建前调用", this);
  }
  willStateUpdate(nextState) {
    const oldValue = this.state;
    const li = [1, 2, 3, 4];
    this.state = {
      ...oldValue,
      li,
    };
  }
  shouldStateUpdate(nextState) {
    if (JSON.stringify(nextState) === JSON.stringify(this.state)) {
      console.log("值相等,不更新");
      return false;
    } else {
      console.log("值不相等,更新");
      return true;
    }
  }
}

const user = new User();
user.setState({ name: "李四", age: 19 });
console.log(user.state);

输出:

我是创建前调用 User { state: { hehe: '9' } }
值不相等,更新
{ hehe: '9', li: [ 1, 2, 3, 4 ], name: '李四', age: 19 }

标签:生命周期,const,log,shouldStateUpdate,state,简单,console,定义
From: https://www.cnblogs.com/lijun12138/p/16665209.html

相关文章