From 13ff0ebe07760152cd6ba28e79fed818ea4e599b Mon Sep 17 00:00:00 2001 From: yuche Date: Mon, 2 Jul 2018 01:28:39 +0800 Subject: [PATCH] =?UTF-8?q?fix(eslint):=20eslint=20=E7=9A=84=20class=20met?= =?UTF-8?q?hod=20=E4=B9=9F=E6=98=AF=20function,=20close=20#238?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__tests__/no-stateless-function.js | 12 ++++++++++++ .../rules/no-stateless-component.js | 5 ++++- packages/eslint-plugin-taro/utils/utils.js | 2 -- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/eslint-plugin-taro/__tests__/no-stateless-function.js b/packages/eslint-plugin-taro/__tests__/no-stateless-function.js index 078cd12749e..32f3a08cfe5 100644 --- a/packages/eslint-plugin-taro/__tests__/no-stateless-function.js +++ b/packages/eslint-plugin-taro/__tests__/no-stateless-function.js @@ -52,6 +52,18 @@ ruleTester.run('no-stateless-component', rule, { return {item} }) ` + }, { + code: testComponent(`const searchbar = ( + + + + + + 搜索历史: + {histories} + + + );`) }], invalid: testInvalid(ERROR_MESSAGE, [ `function Test () { return }`, diff --git a/packages/eslint-plugin-taro/rules/no-stateless-component.js b/packages/eslint-plugin-taro/rules/no-stateless-component.js index 0f2b450172b..dfd02425f94 100644 --- a/packages/eslint-plugin-taro/rules/no-stateless-component.js +++ b/packages/eslint-plugin-taro/rules/no-stateless-component.js @@ -12,6 +12,9 @@ module.exports = { JSXElement (node) { const parents = context.getAncestors(node) const funcDecl = parents.find(p => p.type === 'FunctionDeclaration') + if (parents.some(p => p.type === 'JSXElement')) { + return + } if (funcDecl) { context.report({ message: ERROR_MESSAGE, @@ -21,7 +24,7 @@ module.exports = { const funcExpression = parents.find(p => p.type === 'ArrowFunctionExpression' || p.type === 'FunctionExpression') - if (funcExpression) { + if (funcExpression && funcExpression.parent.type !== 'MethodDefinition') { const arrowFuncParents = context.getAncestors(funcExpression) const isMapCallExpr = arrowFuncParents.some(p => p.type === 'CallExpression' && diff --git a/packages/eslint-plugin-taro/utils/utils.js b/packages/eslint-plugin-taro/utils/utils.js index 7a70ba45e54..ad4d12c01f8 100644 --- a/packages/eslint-plugin-taro/utils/utils.js +++ b/packages/eslint-plugin-taro/utils/utils.js @@ -23,9 +23,7 @@ function testComponent (code) { return ` class App extends Component { render () { - return ( ${code} - ) } } `