Reactjs 警告应为赋值或函数调用,而不是看到表达式

Reactjs 警告应为赋值或函数调用,而不是看到表达式,reactjs,eslint,Reactjs,Eslint,当我使用这一行时: this.state.selectedJobType.length > 0 ? '' : this.setState({ jobTypeErrMsg: 'Please select at least one job type'}); 它抛出错误: 警告应为赋值或函数调用,而不是看到 表达方式: 因为三元运算符根据条件返回值,并且您使用三元运算符更新状态,这就是原因 condition ? expr1 : expr2; 三元运算符执行表达

当我使用这一行时:

this.state.selectedJobType.length > 0 ? 
    '' 
    : 
    this.setState({ jobTypeErrMsg: 'Please select at least one job type'});
它抛出错误:

警告应为赋值或函数调用,而不是看到 表达方式:


因为三元运算符根据条件返回值,并且您使用三元运算符更新状态,这就是原因

condition ? expr1 : expr2;
三元运算符执行表达式[期望得到某个值的表达式,可以是函数调用,也可以是任何值]并返回该表达式的结果

使用if条件代替三元运算符,如下所示:

if(this.state.selectedJobType.length)
   this.setState({ jobTypeErrMsg: 'Please select at least one job type'})
let a = 0==0 ? 1 : 0;
<div>{ 0==0 ? 'true' : 'false' }</div>
三元运算符根据条件赋值,如下所示:

if(this.state.selectedJobType.length)
   this.setState({ jobTypeErrMsg: 'Please select at least one job type'})
let a = 0==0 ? 1 : 0;
<div>{ 0==0 ? 'true' : 'false' }</div>
或者,您可以在JSX中使用它进行条件呈现,如下所示:

if(this.state.selectedJobType.length)
   this.setState({ jobTypeErrMsg: 'Please select at least one job type'})
let a = 0==0 ? 1 : 0;
<div>{ 0==0 ? 'true' : 'false' }</div>
:

根据条件返回两个表达式之一。如果条件 如果为true,则运算符返回expr1的值;否则, 返回expr2的值