Index
props
は親コンポーネントから子コンポーネントへデータを渡すために使用されます。これは単方向のデータフローを提供し、子コンポーネントが親から渡されたデータを受け取り、それを使用することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<!-- Parent Component --> <template> <child-component :my-prop="parentData" /> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { data() { return { parentData: 'Hello from parent' } }, components: { ChildComponent } } </script> <!-- Child Component --> <template> <p>{{ myProp }}</p> </template> <script> export default { props: { myProp: String } } </script> |
<slot>
はコンポーネントのテンプレートにおけるプレースホルダーまたは穴埋めとして機能し、親コンポーネントが子コンポーネントのテンプレート内で独自のコンテンツを提供することができるようにします。これにより、コンポーネントの外観と構造をより柔軟にカスタマイズできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!-- Parent Component --> <template> <child-component> <p>Hello from parent</p> </child-component> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent } } </script> <!-- Child Component --> <template> <div> <slot></slot> </div> </template> <script> export default {} </script> |
- データのパッシング:
props
はデータを渡すために使用され、<slot>
はマークアップやコンテンツを渡すために使用されます。 - 目的:
props
は親から子へのデータの単方向フローを実現し、<slot>
はコンポーネントのテンプレートにプレースホルダを提供し、コンテンツのカスタマイズを可能にします。 - 柔軟性:
<slot>
はコンポーネントの外観や構造をカスタマイズするための高い柔軟性を提供し、props
はデータの渡し方に関する制約を持っています。
これらの違いを理解することで、props
と<slot>
のどちらを使用するか、またはそれらをどのように組み合わせるかを適切に判断することができます。