我在我的shouldComponentUpdate方法中执行条件,如果条件匹配返回true,则返回false ...但是我仍然得到一个"返回undefined而不是布尔值..."正如标题所示。
这是我的方法:*请注意,如果我没有setTimeout,它会自动假定nextProps.props.length为0,即使它超过0
shouldComponentUpdate(nextProps){
setTimeout(()=>{
console.log(nextProps.props, nextProps.props.length);
if(nextProps.props.length > 0){
return true;
}else{
return false;
}
},1000)
}
答案 0 :(得分:1)
您的组件道具实际上存储在nextProps
参数中。您似乎正试图访问props
中的nextProps
,这显然看起来很可疑。
如果您真正想要实现的目标,那么您永远不应该将组件的支柱命名为props
。为您的组件道具提供更具描述性的名称。
此外,shouldComponentUpdate
中的表达式可以简化为:
shouldComponentUpdate(nextProps){
return nextProps.props.length > 0; // assuming nextProps.props is an array
}
此外,您应该发布组件的propTypes
定义,以便组件的道具合同清晰。