JSX 中的混合运算符

Posted

技术标签:

【中文标题】JSX 中的混合运算符【英文标题】:Mixed operators in JSX 【发布时间】:2017-06-13 11:13:18 【问题描述】:

我想在 JSX 中使用混合运算符,例如:

datas && datas.map(function(data,i) return <MyComponent key=i />) || []

虽然这在技术上有效,但 ES lint 会警告“无混合运算符”。这是在 JSX 中使用的安全模式吗?

【问题讨论】:

只是关闭 lint 规则? --> eslint.org/docs/rules/no-mixed-operators#when-not-to-use-it 我意识到我可以做到。但我想知道在 JSX 中使用混合使用运算符是否是一种不好的模式,应该避免。 当然可以使用混合运算符;它是有效的 javascript。 lint 投诉只是希望您正确地将它们括起来。 【参考方案1】:

来自the ESLint documentation:

禁止混合使用不同的运算符(no-mixed-operators)

用括号括起来复杂的表达式阐明了开发人员的意图,这使代码更具可读性。当在表达式中连续使用不带括号的不同运算符时,此规则会发出警告。

var foo = a && b || c || d;    /*BAD: Unexpected mix of '&&' and '||'.*/
var foo = (a && b) || c || d;  /*GOOD*/
var foo = a && (b || c || d);  /*GOOD*/

如果您不想收到有关混合运算符的通知,那么禁用此规则是安全的。

希望这会有所帮助。

【讨论】:

对,我不认为这会应用 JSX,但如果我只是这样做:(datas &amp;&amp; datas.map(function(data,i) return &lt;MyComponent key=i /&gt;)) || [] 它可以工作。谢谢。【参考方案2】:

你可以像这样用括号括起来。它不会显示该警告。

datas &amp;&amp; (datas.map(function(data,i) return &lt;MyComponent key=i /&gt;) || [])

它对我有用。

【讨论】:

以上是关于JSX 中的混合运算符的主要内容,如果未能解决你的问题,请参考以下文章

javascript React - 三元运算符或jsx中的条件包含带反应的html

JSX 中扩展运算符的奇怪行为

如何在 JSX 的三元运算符中调用两个函数?

c语言 不同数据类型间的混合运算

c语言 不同数据类型间的混合运算

在 className if-else 语法中反应 JSX [重复]