发布于2021-05-30 12:31 阅读(1150) 评论(0) 点赞(17) 收藏(4)
Vue中的slot对于编写可复用可扩展的组件是再合适不过了,常见的用法有以下3种:
1. 插入一个匿名的slot,匿名的情况只适用于只插入一个的时候;
2. 插入有名的slot,当插入的slot有多个的时候,需要按名占位;
3. 在slot的内部可以将值通过有名slot传递出去,让外层组件接收;
以下是代码实例:
首先是App.vue,调用了所有组件,插入了所有的有名和匿名的Slot。
- <template>
- <div id="app">
- <!-- 外层组件 -->
- <todo-list>
- <!-- 插入匿名slot -->
- <todo-item
- @delete="handleDelete"
- v-for="(item, index) in list"
- :key="index"
- :title="item.title">
- <!-- 插入有名slot,接受内部返回的值 -->
- <template v-slot:header="{ value }">
- <!-- 接收有名slot内部返回的值 -->
- <span>前置图标--{{ value }}</span>
- </template>
-
- </todo-item>
- </todo-list>
- </div>
- </template>
-
- <script>
- import TodoList from "./components/TodoList.vue";
- import TodoItem from "./components/TodoItem.vue";
-
- export default {
- name: "app",
- components: {
- TodoItem,
- TodoList,
- },
- data() {
- return {
- list: [
- {
- title: "课程1",
- },
- {
- title: "课程2",
- },
- ],
- };
- },
- methods: {
- handleDelete(title){
- alert(title);
- }
- },
- };
- </script>
以下是App组件里引入的TodoList组件,这是一个可以插入匿名Slot的组件。
- <template>
- <ul>
- <!-- 匿名slot -->
- <slot></slot>
- </ul>
- </template>
- <script>
- export default {
- data: function () {
- return {};
- },
- };
- </script>
以下是App组件里引入的TodoItem组件,这是一个可以插入有名Slot的组件。
- <template>
- <li>
- <!-- 插入一个有名slot,名为header -->
- <slot name="header" :value="value"></slot>
- <span>--{{title}}--</span>
- <!-- 插入一个有名slot,名为tail,如果没有传值,则默认值为“哈哈哈”-->
- <slot name="tail">哈哈哈</slot>
- <button @click="handleClick" style="margin-left:10px;">删除</button>
- </li>
- </template>
- <script>
- export default {
- props: {
- title: String,
- },
- data: function () {
- return {
- // 给有名slot传值返回给外层组件
- value: "呵呵呵",
- };
- },
- methods: {
- handleClick() {
- // 触发delete方法,给父组件传值
- this.$emit("delete", this.title);
- },
- },
- };
- </script>
- <style scoped>
-
- </style>
以下是最终的渲染结果:
原文链接:https://blog.csdn.net/weixin_40629244/article/details/117283860
作者:Bhbvhbbgg
链接:http://www.qianduanheidong.com/blog/article/116029/c68c354267bbe5909db3/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!