UNPKG

eslint-config-ts-lib

Version:

ts-lib-scripts创建的ts库项目使用的ESLint配置

132 lines (102 loc) 2.7 kB
# react/display-name > 来自 [undefined](undefined) 的规则。 # Prevent missing displayName in a React component definition (react/display-name) DisplayName allows you to name your component. This name is used by React in debugging messages. ## Rule Details Examples of **incorrect** code for this rule: ```jsx var Hello = createReactClass({ render: function () { return <div>Hello {this.props.name}</div>; }, }); ``` Examples of **correct** code for this rule: ```jsx var Hello = createReactClass({ displayName: "Hello", render: function () { return <div>Hello {this.props.name}</div>; }, }); ``` ## Rule Options ```js ... "react/display-name": [<enabled>, { "ignoreTranspilerName": <boolean> }] ... ``` ### `ignoreTranspilerName` (default: `false`) When `true` the rule will ignore the name set by the transpiler and require a `displayName` property in this case. Examples of **correct** code for this rule: ```jsx var Hello = createReactClass({ displayName: "Hello", render: function () { return <div>Hello {this.props.name}</div>; }, }); module.exports = Hello; ``` ```jsx export default class Hello extends React.Component { render() { return <div>Hello {this.props.name}</div>; } } Hello.displayName = "Hello"; ``` ```jsx export default function Hello({ name }) { return <div>Hello {name}</div>; } Hello.displayName = "Hello"; ``` Examples of **incorrect** code for this rule: ```jsx var Hello = createReactClass({ render: function () { return <div>Hello {this.props.name}</div>; }, }); module.exports = Hello; ``` ```jsx export default class Hello extends React.Component { render() { return <div>Hello {this.props.name}</div>; } } ``` ```jsx module.exports = createReactClass({ render: function () { return <div>Hello {this.props.name}</div>; }, }); ``` ```jsx export default class extends React.Component { render() { return <div>Hello {this.props.name}</div>; } } ``` ```jsx function HelloComponent() { return createReactClass({ render: function () { return <div>Hello {this.props.name}</div>; }, }); } module.exports = HelloComponent(); ``` ## About component detection For this rule to work we need to detect React components, this could be very hard since components could be declared in a lot of ways. For now we should detect components created with: - `createReactClass()` - an ES6 class that inherit from `React.Component` or `Component` - a stateless function that return JSX or the result of a `React.createElement` call. ## 参考文档 - [react/display-name 官方文档](https://github.com/yannickcr/eslint-plugin-react/blob/HEAD/docs/rules/display-name.md)