react中shouldComponentUpdate中的this问题

新手上路,请多包涵

在shouldComponentUpdate这个生命周期函数中,分别打印this.state和this得到的结果中state中的值是不同的,这是为什么?
图片描述

代码如下:

import React, { Component } from "react";

class Test extends Component {
  constructor(props) {
    super(props);
    this.state = {
      num: 0
    };
    this.handleClick = this.handleClick.bind(this);
  }

  shouldComponentUpdate(nextProps, nextState) {
    console.log("this.state = ", this.state);
    console.log(this);
    return false;
  }
  
  render() {
    console.log("this.state = ", this.state);
    return (
      <div>
        <button onClick={this.handleClick}>click</button>
      </div>
    );
  }

  handleClick() {
    this.setState({
      num: this.state.num + 1
    });
  }
}
阅读 1.5k
1 个回答

应该是因为第二次打印后,this.state 的值发生了变化,因此打印出来的值也跟着变化了,你可以对需要打印的对象进行深拷贝后再打印出来,这样打印出来的值就和打印瞬间的值是一样的。
不过如何对 React 的实例进行深拷贝这个问题我还没有研究过,反正 JSON 是做不来的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题