Reactjs shouldComponentUpdate():返回未定义的值,而不是布尔值。

Reactjs shouldComponentUpdate():返回未定义的值,而不是布尔值。,reactjs,Reactjs,在任何人将此标记为副本之前,我先讨论了这个问题 而且它没有回答我的问题(或者我没能得到它)(至少可以说) 这是我的密码 shouldComponentUpdate(nextProps, nextState) { console.log(this.props.order, nextProps.order) if (nextProps.order !== this.props.order) { return true; } } 在这里,当我检查chrom

在任何人将此标记为副本之前,我先讨论了这个问题 而且它没有回答我的问题(或者我没能得到它)(至少可以说)

这是我的密码

  shouldComponentUpdate(nextProps, nextState) {
    console.log(this.props.order, nextProps.order)
    if (nextProps.order !== this.props.order) {
      return true;
    }
  }
在这里,当我检查chrome中的控制台日志时,它会抛出一条警告说

shouldComponentUpdate():返回未定义而不是布尔值 值。请确保返回true或false

但是,当我做类似的事情时,一切都按照预期(或我想要的方式)进行

shouldComponentUpdate(nextProps, nextState) {
    console.log(this.props.order, nextProps.order)
      return nextProps.order !== this.props.order
  }
它不会抛出错误


[问题]为什么我会收到警告?当我清楚地返回true时?

nextrops.order!==this.props.order
为false时,shouldComponentUpdate函数不输入if并返回,将返回undefined

shouldComponentUpdate只希望返回布尔值


尝试使用第二个输入返回true或false。

在第二个变体中,它肯定会返回truefalse。但是在第一段代码中,您没有指定else,它可以是true未定义的,因此您会得到警告第一种情况中的错误 因为你什么都不退 if(nextrops.order==this.props.order)。 所以,你可以这样做:

  shouldComponentUpdate(nextProps, nextState) {
    console.log(this.props.order, nextProps.order)
    if (nextProps.order !== this.props.order) {
      return true;
    }
    return false; //this is the missing piece
  } 

在if之后添加
否则返回false
,您只返回true