![](/img/trans.png)
[英]Vue.js: How To Make A Request On Behalf Of A Component From The Interceptor?
[英]How to make a 'Container' component in Vue.js
我是 Vue 新手,找不到使用 Vue.js 實現類似 React 的“Wrapper”組件的方法,例如,使用第 3 方some-table
組件和pagination
組件的可重用datagrid
組件。 直觀地說, datagrid
將提供兩個組件所需的數據/道具/事件,並控制它們之間的通信。 在React中,這可以像這樣簡單地完成
// inside <Datagrid />
<Table {...someProps} />
<Pagination {...otherProps} />
使用 Vue,看起來像下面這樣的東西只能將props
傳遞給子組件
// inside Datagrid.vue
<some-table v-bind="$props"></some-table>
我不確定slots
是否有幫助。 我一直在努力爭取的這個包裝器組件獲取其子級所需的所有props/events/slots
並將它們傳遞給它們,以便我可以利用它的子級(可能是一些第 3 方組件)提供的所有功能。 此外,它還可能負責其子級之間的數據交換之類的事情。 雖然datagrid
可以是一個插槽包裝器,但是如果table
和pagination
都需要我認為應該駐留在datagrid
中的相同data
道具怎么辦。 如何將此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>
我能想到的一些解決方案:
<pagination :total="total" :other-props="are-same-for-all-datagrids"></pagination>
每次我想要一個數據網格?在 Vue 中處理此類情況的任何示例? 提前致謝!
您想使用插槽:
Vue.component('wrapper', { template: '#wrapper' }) new Vue({ el: '#app' })
<!-- wrapper template --> <script type="text/x-template" id="wrapper"> <div class="wrapper" style="background: beige; padding: 5px;"> This is being wrapped: <slot></slot> </div> </script> <div id="app"> <wrapper> <div style="background: aliceblue;">I'm being wrapped!</div> </wrapper> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.3/vue.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.