了解です!

では続けて コラム: よくある落とし穴とその回避策「子コンポーネントの再利用性を損なう書き方」 を書きます。


📌 コラム: よくある落とし穴とその回避策

「子コンポーネントの再利用性を損なう書き方」問題とは?

propsemit を正しく使っているつもりでも、

親のロジックに子が依存しすぎる設計 になってしまい、

その結果 「この子コンポーネント、他で使い回せないじゃん…」 となることがあります。


🟥 【よくある落とし穴】(NGパターン)

<!-- ChildComponent.vue -->
<template>
  <button @click="store.commit('counter/increment')">Increment</button> <!-- ❌ -->
  <p>{{ store.state.counter.count }}</p>                                  <!-- ❌ -->
</template>

<script lang="ts" setup>
import { useStore } from 'vuex';
import { State } from '@/store';

const store = useStore<State>();
</script>

この設計だと…


🟠 【なぜこうなってしまう?】

問題点 説明
子が状態を直接持ってしまう 子の役割は「受け取って表示」なのに「自分で状態をいじる」
emit を使わず store 直呼び 親に通知すべきなのに、子が勝手に操作してしまう

🟢 【正しい書き方(再利用性を守る)】