ecomfe / eslint-config

eslint shareable config for efe
MIT License
118 stars 31 forks source link

readme 中 react 部分的一些疑惑 #78

Open GitHubJian opened 2 years ago

GitHubJian commented 2 years ago

对于 react + ts 项目,按照 readme 中的配置,添加 @ecomfe/eslint-config/react 后,会对 tsx 中的 interface 报一些未定义的错误,经过源码阅读与个人尝试,对于这类项目 @ecomfe/eslint-config/typescript 更加合适,所以是否需要升级一下 readme 呢?

Justineo commented 2 years ago

应该是两个一起使用的。

otakustay commented 2 years ago

2个都用的情况下也会报这些错吗?

GitHubJian commented 2 years ago

extends: ['@ecomfe/eslint-config', '@ecomfe/eslint-config/typescript', '@ecomfe/eslint-config/react'] typescript & react 的顺序前后都试过了 两个一起用不会报错,这个 rule [react/jsx-indent] 就会导致格式上出现了问题,会出现超长的缩进 有 @ecomfe/eslint-config/react 配置 lint 的结果

image

无 @ecomfe/eslint-config/react 配置lint的结果

image

可以很明显的看出来两种格式的结果不同,但是前者的缩进匹配好像有点问题,我看了一下 react/index.js 的源码,里边并没有 tsx 的配置,只是 jsx 的,所以我不太理解这块为什么导致了这个现象,是否符合预期?

otakustay commented 2 years ago

格式化的话,我感觉是indent规则和TS的问题:https://github.com/typescript-eslint/typescript-eslint/issues/1824

indent规则关掉试试?

GitHubJian commented 2 years ago

https://github.com/ecomfe/eslint-config/blob/master/typescript/index.js#L31 这个吗?

GitHubJian commented 2 years ago

'react/jsx-indent': [ 2, 4, { checkAttributes: false, indentLogicalExpressions: true, }, ], 'react/jsx-no-bind': [ 'warn', { ignoreDOMComponents: true, ignoreRefs: false, allowArrowFunctions: true, allowFunctions: true, allowBind: false, }, ], 'react/jsx-indent-props': [ 2, { indentMode: 4, ignoreTernaryOperator: true, }, ], 'react/jsx-wrap-multilines': [ 2, { declaration: 'parens-new-line', assignment: 'parens-new-line', return: 'parens-new-line', arrow: 'parens-new-line', condition: 'parens-new-line', logical: 'parens-new-line', prop: 'parens-new-line', }, ],

修改一下这三个规则就可以了