跳至内容

@stylistic/jsx/

jsx-max-props-per-line

强制执行 JSX 中单行上的最大属性数。

规则详情

此规则检查所有 JSX 元素,并验证每行上的属性数不超过允许的最大值。如果属性的开头与前一个属性的结尾之间有换行符,则属性被认为在新的行中。展开属性算作一个属性。此规则默认关闭,当打开时,一行上的默认最大属性数为 1

此规则的不正确代码示例

jsx
<Hello lastName="Smith" firstName="John" />;

<Hello foo={{
  bar
}} baz />;

此规则的正确代码示例

jsx
<Hello
  firstName="John"
  lastName="Smith"
/>;

<Hello
  {...this.props}
  firstName="John"
  lastName="Smith"
/>;

规则选项

js
...
"@stylistic/jsx/jsx-max-props-per-line": [<enabled>, { "maximum": <number>, "when": <string> }]
...

// OR

...
"@stylistic/jsx/jsx-max-props-per-line": [<enabled>, { "maximum": { "single": <number>, "multi": <number> } }]
...

maximum

允许在单行中出现的最大属性数。默认为 1

此规则的不正确代码示例

jsx
// [1, { "maximum": 2 }]
<Hello firstName="John" lastName="Smith" tel={5555555} />;

此规则的正确代码示例

jsx
// [1, { "maximum": 2 }]
<Hello
  firstName="John" lastName="Smith"
  tel={5555555}
/>;

最大值可以指定为对象 { single: 1, multi: 1 },以指定单行和多行标记允许的最大属性数。

when

仅当 maximum 指定为数字时才应用。

可能的值

  • always(默认)- 始终检查每行最大属性数。
  • multiline - 仅当 jsx 标记跨多行时才检查每行最大属性数。

此规则的不正确代码示例

jsx
// [1, { "when": "always" }]
<Hello firstName="John" lastName="Smith" />

此规则的正确代码示例

jsx
// [1, { "when": "multiline" }]
<Hello firstName="John" lastName="Smith" />
<Hello
  firstName="John"
  lastName="Smith"
/>

何时不使用

如果不使用 JSX,则可以禁用此规则。