Vueが新しく、Vue.jsでReact-like 'Wrapper'コンポーネントを実装する方法が見つかりません。たとえば、再利用可能なdatagrid
サードパーティのsome-table
コンポーネントとpagination
コンポーネントです。直感的に、datagrid
は、両方のコンポーネントが必要とするデータ/小道具/イベントを提供し、それらの間の通信を制御する。 はを反応させるのでは、これは単にヴューでVue.jsで 'Container'コンポーネントを作成する方法
// inside <Datagrid />
<Table {...someProps} />
<Pagination {...otherProps} />
のようなもののように行うことができる、唯一の
// inside Datagrid.vue
<some-table v-bind="$props"></some-table>
私はよく分からない子コンポーネントまでprops
を渡すことができ、以下のようなもののように思えますもしslots
が助けになるのであれば。私が苦労してきたこのラッパーコンポーネントは、子どもが必要とするすべての機能(おそらくいくつかの第三者コンポーネント)が利用できるように、すべての子どもが必要とする子どもを必要とし、それらに渡します。さらに、子供たちとの間のデータ交換のようなものについても責任を負うことがあります。 datagrid
はスロットラッパーになる可能性がありますが、table
とpagination
の両方に同じdata
の小道具が必要な場合は、datagrid
にあるはずです。このdata
をスロットに渡すにはどうすればいいですか?
// Datagrid.vue
<template>
<div>
<slot name="table"></slot>
<slot name="pagination"></slot>
</div>
</template>
<script>
export default {
name: 'Datagrid',
data() {
return {
data: 'How to share it with table and pagination',
}
},
}
</script>
私が把握できたいくつかの解決策:
- Render Functionsが、私は単純に回し、代わりに「コンテナ」コンポーネントを作成するの共犯が、この場合
- に必要とされることはないと思いますmixinsになりますが、これはデータグリッドが必要なときに毎回
<pagination :total="total" :other-props="are-same-for-all-datagrids"></pagination>
を入力する必要があることを意味しますか?
このような状況をVueで処理する例はありますか?前もって感謝します!
スロットは正確に何をしたいです。 –