# テンプレート参照について
このページは、すでにコンポーネントの基本を読んでいることを前提としています。コンポーネントを初めて使用する場合は、最初にそちらをお読みください。
プロパティやイベントが存在するにもかかわらず、 JavaScript で子コンポーネントに直接アクセスしなければならない場合があります。それを達成するために、ref
属性を使うことで子コンポーネントや HTML 要素に参照 ID を割り当てられます。例えば、以下のようになります:
<input ref="input" />
1
これは、例えば、コンポーネントのマウント時にプログラムで input をフォーカスさせたい時に便利です:
const app = Vue.createApp({})
app.component('base-input', {
template: `
<input ref="input" />
`,
methods: {
focusInput() {
this.$refs.input.focus()
}
},
mounted() {
this.focusInput()
}
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
また、別の ref
をコンポーネント自体に追加し、それを使用して親コンポーネントからの focusInput
イベントをトリガーできます:
<base-input ref="usernameInput"></base-input>
1
this.$refs.usernameInput.focusInput()
1
WARNING
$refs
は、コンポーネントがレンダリングされた後にのみ生成されます。これは、子要素を直接操作するための脱出ハッチとしてのみ意図されています。テンプレートや computed
プロパティから $refs
にアクセスするべきではありません。
こちらも参照してください: コンポジション API でテンプレート参照を使用する