eslint-plugin-reblend
Version:
Reblend specific linting rules for ESLint
115 lines (77 loc) ⢠2.36 kB
Markdown
# Disallow extra closing tags for components without children (`reblend/self-closing-comp`)
š§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
<!-- end auto-generated rule header -->
Components without children can be self-closed to avoid unnecessary extra closing tag.
## Rule Details
Examples of **incorrect** code for this rule:
```jsx
var HelloJohn = <Hello name="John"></Hello>;
var HelloJohnCompound = <Hello.Compound name="John"></Hello.Compound>;
```
Examples of **correct** code for this rule:
```jsx
var contentContainer = <div className="content"></div>;
var intentionalSpace = <div> </div>;
var HelloJohn = <Hello name="John" />;
var HelloJohnCompound = <Hello.Compound name="John" />;
var Profile = (
<Hello name="John">
<img src="picture.png" />
</Hello>
);
var ProfileCompound = (
<Hello.Compound name="John">
<img src="picture.png" />
</Hello.Compound>
);
var HelloSpace = <Hello> </Hello>;
```
## Rule Options
The rule can take one argument to select types of tags, which should be self-closed when this is possible. By default custom components tags and html tags should be self-closed.
```js
...
"reblend/self-closing-comp": ["error", {
"component": true,
"html": true
}]
...
```
### `component`
When `true`, custom components tags should be self-closed.
Examples of **incorrect** code for this rule:
```jsx
var HelloJohn = <Hello name="John"></Hello>;
```
Examples of **correct** code for this rule:
```jsx
var contentContainer = <div className="content"></div>;
var intentionalSpace = <div> </div>;
var HelloJohn = <Hello name="John" />;
var HelloJohnCompound = <Hello.Compound name="John" />;
var Profile = (
<Hello name="John">
<img src="picture.png" />
</Hello>
);
var ProfileCompound = (
<Hello.Compound name="John">
<img src="picture.png" />
</Hello.Compound>
);
```
### `html`
When `true`, html components tags should be self-closed.
Examples of **incorrect** code for this rule:
```jsx
var contentContainer = <div className="content"></div>;
```
Examples of **correct** code for this rule:
```jsx
var contentContainer = <div className="content" />;
var contentContainer = (
<div className="content">
<div />
</div>
);
var intentionalSpace = <div> </div>;
```