📌 5-1. $refs の扱い

✅ 要点まとめ


🟥 変換パターン(具体例)

【クラスコンポーネントの $refs 使用例】

// ファイル名: MyComponent.vue (クラス版)
@Component
export default class MyComponent extends Vue {
  mounted() {
    // this.$refs.myInput は HTMLInputElement
    (this.$refs.myInput as HTMLInputElement).focus();
  }
}

<!-- template 部分 -->
<template>
  <input ref="myInput" />
</template>


【Composition API (<script setup> 版)】

<!-- ファイル名: MyComponent.vue -->
<template>
  <!-- ref に "myInput" を設定 -->
  <input ref="myInput" />
</template>

<script setup lang="ts">
// ref と onMounted をインポート
import { ref, onMounted } from 'vue';

// HTMLInputElement 型の ref を作成
const myInput = ref<HTMLInputElement | null>(null);

// mounted 時に focus
onMounted(() => {
  myInput.value?.focus();
});
</script>


🟡 変換表(まとめ)

クラスコンポーネント (this.$refs) Composition API (ref())
this.$refs.myInput as HTMLInputElement myInput.value
自動で any `ref<HTMLElement
mounted() の中で使用 onMounted(() => {}) で使用

🟢 複数の $refs がある場合

<!-- ファイル名: MultiRef.vue -->
<template>
  <div>
    <input ref="input1" />
    <input ref="input2" />
  </div>
</template>

<script setup lang="ts">
import { ref, onMounted } from 'vue';

const input1 = ref<HTMLInputElement | null>(null);
const input2 = ref<HTMLInputElement | null>(null);

onMounted(() => {
  input1.value?.focus();
  // 何か処理を追加
});
</script>