为什么 Eslint 会自动为带连字符的对象 属性 添加一个 space?

Why Eslint add a space automatically for object property name with hyphen?

我有这个数据,我想在 Vue 中显示它:

<script>
export default {
  data() {
    return {
      heroes: [
        {
          response: "success",
          id: "332",
          name: "Hulk",   
          biography: {
            "full-name": "Bruce Banner"
          }
        }
      ]
    };
  }
};
</script>

问题是当我保存我的代码时,Eslint 为“全名”添加了额外的 space,来自

<h2>{{ hero.biography.full-name }}</h2>

<h2>{{ hero.biography.full - name }}</h2>

当我运行它时,它只显示NaN

在.eslintrc.js中,我添加了 "vue/attribute-hyphenation": "off"

module.exports = {
  root: true,
  env: {
    node: true
  },
  extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
  parserOptions: {
    parser: "babel-eslint"
  },
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
    "vue/attribute-hyphenation": "off"
  }
};

我该如何解决这个问题?

您需要使用方括号语法来访问 属性 包含连字符的名称。否则将被视为减号运算符。

<h2>{{ hero.biography['full-name'] }}</h2>

JavaScript 属性 名称的正常规则适用于 Vue 模板表达式。如果 属性 名称是有效标识符,您可以使用点表示法。粗略地说,这意味着它可以包含字母数字、下划线和 $。对于其他字符,您需要使用方括号。