Vue做用域插槽

默認插槽和具名插槽的概念比較好理解,這裏主要以官方文檔的案例來說解一下做用域插槽。html

首先是有一個currentUser的組件:vue

 1 <!DOCTYPE html>
 2 <html lang="zh-CN">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <div id="app">
11         <current-user>
12  {{ user.firstName }} 13         </current-user>
14     </div>
15     <script src="vue.min.js"></script>
16     <script>
17  Vue.component('currentUser', { 18  template: ` 19                 <span>
20                     <slot>{{ user.lastName }}</slot>
21                 </span>
22  `, 23  data() { 24                 return { 25  user: { 26  firstName: 'w', 27  lastName: 'ts'
28  } 29  } 30  } 31  }) 32 
33         new Vue({ 34  el: '#app'
35  }) 36     </script>
37 </body>
38 </html>

然而該頁面沒法正常工做,由於只有currentUser能夠訪問到user,出錯的地方在這裏:app

而後,引入一個插槽prop:ui

1 <span>
2     <slot :user="user">
3  {{ user.lastName }} 4     </slot>
5 </span>

接着,須要給v-slot帶一個值來定義咱們提供的插槽 prop 的名字:spa

1 <current-user>
2     <template v-slot="wts">
3  {{ wts.user.firstName }} 4     </template>
5 </current-user>

簡單的講做用域插槽就是讓插槽內容可以訪問子組件中才有的數據,修改後即可以正常工做了。code

相關文章
相關標籤/搜索