Skip to content

react/no-children-prop Correctness

This rule is turned on by default.

What it does

Checks that children are not passed using a prop.

Why is this bad?

Children should always be actual children, not passed in as a prop. When using JSX, the children should be nested between the opening and closing tags. When not using JSX, the children should be passed as additional arguments to React.createElement.

Example

Examples of incorrect code for this rule:

jsx
<div children='Children' />

<MyComponent children={<AnotherComponent />} />
<MyComponent children={['Child 1', 'Child 2']} />
React.createElement("div", { children: 'Children' })

Examples of correct code for this rule:

jsx
<div>Children</div>
<MyComponent>Children</MyComponent>

<MyComponent>
  <span>Child 1</span>
  <span>Child 2</span>
</MyComponent>

React.createElement("div", {}, 'Children')
React.createElement("div", 'Child 1', 'Child 2')

How to use

To enable this rule in the CLI or using the config file, you can use:

bash
oxlint --deny react/no-children-prop
json
{
  "rules": {
    "react/no-children-prop": "error"
  }
}

References

Released under the MIT License.