当我使用这一行时:
this.state.selectedJobType.length > 0 ?
''
:
this.setState({ jobTypeErrMsg: 'Please select at least one job type'});
它抛出错误:
警告预期分配或函数调用,而是看到一个 表达式:
答案 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的值。