属性(ref, slot, slot-scope, is)の活用方法

Vue.jsで提供されている「属性」の活用方法を確認します。「子コンポーネントのDOMを直接操作する方法」「子コンポーネントにテンプレートを挿入する方法」「動的に子コンポーネントを切り替える方法」を解説します。

ref
( 子コンポーネントのDOMを直接操作 )

<my-child ref="target"/>
methods: {
  clickedButton() {
    window.alert(this.$refs.target.$el.firstElementChild.innerHTML)
  }
},

See the Pen vue ref by waku-waku (@raku-raku) on CodePen.

slot
( 子コンポーネントにテンプレートを挿入 )

slot

503-vue-sfc-template_scope.png

スロット(挿入口)を利用すると、親コンポーネントから任意のテンプレートを挿入することができます。

<h1>わくわくBank</h1>の部分は名前付きスロットで挿入しています。

スロットの名前を指定しない場合、デフォルトスロットに挿入されます。

slot-scope

slotを利用する際、子コンポーネント上に存在するデータを親コンポーネント内で利用したいときに slot-scope を利用します。

以下、子コンポーネントの value を親コンポーネントからアクセスできるようにしています。

See the Pen slot-scope by waku-waku (@raku-raku) on CodePen.

503-vue-sfc-template_slot-scope.png

1. 子コンポーネントのslotで、親コンポーネントからアクセスさせたいデータをv-bind(:)で指定します。

2. 親コンポーネントでslot-scopeで指定したデータを通じて子コンポーネントのデータにアクセスしています。

is
( 動的に子コンポーネントを切り替え )

動的にコンポーネントを切り替えたい時に利用します。

See the Pen WLGxbW by waku-waku (@raku-raku) on CodePen.