警告预期分配或函数调用,而是看到一个表达式

时间:2017-04-04 10:46:49

标签: reactjs eslint

当我使用这一行时:

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

它抛出错误:

  

警告预期分配或函数调用,而是看到一个   表达式:

1 个答案:

答案 0 :(得分:3)

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

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;

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

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

或者根据条件调用其他功能:

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

DOCs

  

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