【问题标题】:warning Expected an assignment or function call and instead saw an expression警告应为赋值或函数调用,而是看到一个表达式
【发布时间】:2017-08-29 12:34:57
【问题描述】:

当我使用这条线时:

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

它抛出错误:

警告应为赋值或函数调用,但看到的是 表达式:

【问题讨论】:

    标签: reactjs eslint


    【解决方案1】:

    因为三元运算符在基本条件下返回值,而您正在使用三元运算符更新状态,这就是原因。

    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:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2021-03-14
      • 2020-06-17
      • 2018-01-16
      • 1970-01-01
      • 2017-09-09
      • 2019-04-22
      相关资源
      最近更新 更多