如何修复嵌套样式组件中的缩进 eslint 错误?

Posted

技术标签:

【中文标题】如何修复嵌套样式组件中的缩进 eslint 错误?【英文标题】:how to fix indent eslint error in nested styled-components? 【发布时间】:2018-08-19 08:13:00 【问题描述】:

如何解决这个 eslint 错误?

我想写下面的格式。

const Hoge = styled.div`
  ...

  .class 
    color: $props =>
      props.a !== 'aaaaaa' &&
      props.b !== 'bbbbbb' &&
      '#ccc';
  
`

但是这种格式有 eslint 错误。

错误:[eslint] 预期缩进 4 个空格,但找到 6 个。(缩进)

我想知道如何解决这个问题。

我正在使用以下版本。

"styled-components": "^3.1.6",
"eslint": "^4.17.0",
"eslint-config-prettier": "^2.9.0",
"eslint-plugin-prettier": "^2.6.0",
"prettier": "^1.10.2",
"prettier-eslint": "^8.8.1",

缩进的 eslint 设置就在下面。

 "indent": ["error", 2,  "SwitchCase": 1 ],

【问题讨论】:

【参考方案1】:

首先,eslint 的indent 规则工作正常,见here。如果您想继续使用 styled-components 并遵守 indent 的 linter 配置,最简单的解决方案可能是不内联编写插值函数,而是将其分配给变量。

例如:

const getColorForClass = ( a, b ) => 
  return a !== 'aaaaaa' && b !== 'bbbbbb' && '#ccc'


const Hoge = styled.div`
  .class 
    color: $getColorForClass;
  
`

【讨论】:

我什至没有想到将它分成一个函数,但即使没有 eslint borking,它也确实让整个事情变得更干净【参考方案2】:

我想指出这需要修复一些 if/case 以正确处理成功/错误情况,否则你最终会得到 ​​p>

.class 
  color:

所以我建议这种方法,幸运的是它本身解决了 eslint 问题。

.class 
  $props =>
    props.a !== 'aaaaaa' &&
    props.b !== 'bbbbbb' && 'color: #ccc'
  ;

【讨论】:

以上是关于如何修复嵌套样式组件中的缩进 eslint 错误?的主要内容,如果未能解决你的问题,请参考以下文章

在 jsx 上使用 eslint 缩进

如何解决在 Ionic Vue 方法的嵌套范围内定义“this”时的 ESLint 错误

React-Native 应用程序中的 ESLint / Prettier / Husky 缩进问题

如何解决 eslint 错误:自定义路由组件中的“禁止传播道具”?

Vue组件脚本缩进规则冲突

如何修复解析错误:Vue 中的 invalid-first-character-of-tag-name.eslint (vue/no-parsing-error)