PHPStorm 上的 JSX 语法错误

JSX syntax error on PHPStorm

提问人:rodrigo-silveira 提问时间:5/13/2015 最后编辑:Dougrodrigo-silveira 更新时间:1/26/2018 访问量:620

问:

我正在尝试有条件地在元素集合上设置属性。

render: {
   var buttons = [];
   for (var i = 1; i <= this.props.totalWeeks; i++) {
      buttons.push(
         <button 
            onClick={ this.changeWeek.bind(this, i) } 
            disabled={ i === this.state.currWeek }>{ i }
         </button>);
   }
}

在浏览器中一切正常。但是 PHPStorm(版本 8.0.3)将表达式标记为错误属性值的错误。{ i === this.state.currWeek }

我尝试过用函数调用、变量等来改变它,但似乎无法使错误消失。我也尝试在 PHPStorm 上关闭该检查规则,但找不到可以关闭该规则的设置。

问题

我怎样才能在PHPStorm中消除这个错误?如果这是一个错误,那么我如何通过以其他方式有条件地将 HTML 属性添加到一组元素来摆脱它?

javascript 语法错误 phpstorm reactjs

评论

0赞 Felix Kling 5/13/2015
听起来像是 PHPStorm 中的一个错误。
0赞 rodrigo-silveira 5/13/2015
的确,我的朋友......
0赞 LazyOne 5/13/2015
你在 v9 EAP 版本中尝试过吗?
0赞 rodrigo-silveira 5/13/2015
@LazyOne我没有。我希望在不升级整个IDE的情况下解决这个问题......
1赞 Ben Clayton 8/9/2016
PhpStorm 2016.2 仍然存在此问题(例如<Text selectable={false}/> 被标记为“错误的属性值”)

答:

0赞 Maksym Bondarchuk 1/26/2018 #1

1)如果它是react的渲染(不是你的自定义函数),它应该是“render() { return ; }”针对你的代码

这是 100% 的语法错误,浏览器会忽略它,因为它应该,如果你在类定义体中使用它,语法是下一个:

class Test {
    objectExample: { some: "value" }
    functionExample() { return someExecutionCode(); }
    lambdaFunctionExample = () => { return someExecutionCode(); }
}

但是你同时混合了第一行和第二行,从对象定义开始,主体作为一个函数,它们彼此不合适。

2)你的渲染函数不返回任何东西,它正在制作数组,但不返回它。