警告 期望一个赋值或函数调用,而是看到一个表达式

warning Expected an assignment or function call and instead saw an expression

当我使用这条线时:

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

它抛出错误:

warning Expected an assignment or function call and instead saw an expression:

因为三元运算符 return 条件基础上的值,而您正在使用三元运算符来更新状态,这就是原因。

condition ? expr1 : expr2;

三元运算符执行表达式[期望表达式应该产生某个值,可以是函数调用或直接任何值]和return结果那些表达。

使用 if 条件而不是三元运算符,如下所示:

if(this.state.selectedJobType.length)
   this.setState({ jobTypeErrMsg: 'Please select at least one job type'})

三元运算符根据条件分配值,如下所示:

let a = 0==0 ? 1 : 0;

或者您可以在 JSX 中将其用于 conditional rendering,如下所示:

<div>{ 0==0 ? 'true' : 'false' }</div>

或者根据条件调用其他函数:

1==1 ? a() : b();

DOCs:

Returns one of two expressions depending on a condition. If condition is true, the operator returns the value of expr1; otherwise, it returns the value of expr2.