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.
- JavaScriptで子コンポーネントのDOM要素を直接操作したいときの最終手段です。
- コンポーネント描画後にデータが反映されるだけなので、利用タイミングに気をつけます。
- https://jp.vuejs.org/v2/api/#ref
- 子コンポーネントインスタンスと子要素へのアクセス
slot
( 子コンポーネントにテンプレートを挿入 )
slot
スロット(挿入口)を利用すると、親コンポーネントから任意のテンプレートを挿入することができます。<h1>わくわくBank</h1>
の部分は名前付きスロットで挿入しています。
スロットの名前を指定しない場合、デフォルトスロットに挿入されます。
slot-scope
slotを利用する際、子コンポーネント上に存在するデータを親コンポーネント内で利用したいときに slot-scope
を利用します。
以下、子コンポーネントの value
を親コンポーネントからアクセスできるようにしています。
See the Pen slot-scope by waku-waku (@raku-raku) on CodePen.
1. 子コンポーネントのslotで、親コンポーネントからアクセスさせたいデータをv-bind(:)
で指定します。
2. 親コンポーネントでslot-scope
で指定したデータを通じて子コンポーネントのデータにアクセスしています。
is
( 動的に子コンポーネントを切り替え )
動的にコンポーネントを切り替えたい時に利用します。
See the Pen WLGxbW by waku-waku (@raku-raku) on CodePen.