Skip to content
The translation is synced to the docs on of which the commit hash is d283ef0.

$attrsclassstyle を包含
破壊的変更

概要

classstyle を含む、コンポーネントに渡されたすべての属性が $attrs に含まれるようになりました。

2.x の動作

classstyle 属性は、Vue 2 の仮想 DOM の実装で特別な処理を受けます。そのため、これらは $attrs には含まれず、他の属性はすべて含まれます。

この副作用は、inheritAttrs: false を使用したときに現れます:

  • $attrs 内の属性は自動的にルート要素に追加されなくなり、どこに追加するかは開発者の判断に任されます。
  • しかし、$attrs に含まれない classstyle は、今までどおりコンポーネントのルート要素に適用されます:
vue
<template>
  <label>
    <input type="text" v-bind="$attrs" />
  </label>
</template>
<script>
export default {
  inheritAttrs: false
}
</script>

次のように使用すると:

html
<my-component id="my-id" class="my-class"></my-component>

... 以下のような HTML を生成します:

html
<label class="my-class">
  <input type="text" id="my-id" />
</label>

3.x の動作

$attrs にはすべての属性が含まれるので、すべての属性を別の要素に適用することが容易になります。先ほどの例では、次のような HTML が生成されるようになりました:

html
<label>
  <input type="text" id="my-id" class="my-class" />
</label>

移行手順

inheritAttrs: false を使用しているコンポーネントでは、スタイリングが意図したとおりになっていることを確認してください。これまで classstyle の特別な動作に依存していた場合、これらの属性が別の要素に適用される可能性があるため、一部のビジュアルが崩れるかも知れません。

移行ビルドのフラグ: INSTANCE_ATTRS_CLASS_STYLE

参照