您的位置:首页 > 科技 > IT业 > 机械工业第六设计研究院有限公司_东莞品牌策划公司_站长百度_网络销售平台有哪些软件

机械工业第六设计研究院有限公司_东莞品牌策划公司_站长百度_网络销售平台有哪些软件

2024/12/27 3:09:01 来源:https://blog.csdn.net/qq_42476938/article/details/144031293  浏览:    关键词:机械工业第六设计研究院有限公司_东莞品牌策划公司_站长百度_网络销售平台有哪些软件
机械工业第六设计研究院有限公司_东莞品牌策划公司_站长百度_网络销售平台有哪些软件

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗插槽

在 Vue 3 中,插槽(Slots)是一个强大的功能,可以帮助我们在组件中定义可重用的内容。插槽分为普通插槽、具名插槽和作用域插槽。

💻代码

普通插槽

普通插槽允许你在父组件中插入内容到子组件的指定位置,是没有name属性的。
App.vue

<template><div><h1>我是父组件的H1标题</h1><Child><p>这段代码是在父组件写的,这是插入到子组件的内容。</p></Child><Child></Child></div>
</template><script>
import Child from './Child.vue';export default {components: { Child },name: 'Parent'
}
</script>

Chile.vue

<template><div><h2>这是子组件H2标题</h2><slot></slot> <!-- 普通插槽 --></div></template><script>export default {name: 'Child'}</script>

效果:
在这里插入图片描述

具名插槽

具名插槽允许你在子组件中定义多个插槽,并通过名称来区分它们。
App.vue

<template><div><h1>父组件</h1><Child><template v-slot:header></template><p>这是插入到子组件的主要内容,当父组件没有默认内容时才会展示子组件内容</p><template v-slot:footer><p>这是底部默认内容</p></template></Child></div>
</template><script>
import Child from './Child.vue';export default {components: { Child },name: 'Parent'
}
</script>

Child.vue

<template><div><h2>子组件</h2><slot name="header"><ul><li>header内容</li><li>header内容</li><li>header内容</li></ul></slot> <!-- 具名插槽 --><slot></slot> <!-- 默认插槽 --><slot name="footer"><ul><li>footer内容</li><li>footer内容</li><li>footer内容</li></ul></slot> <!-- 具名插槽 --></div>
</template><script>
export default {name: 'Child'
}
</script>
  • 父组件引用子组件,父组件没有默认内容时会展示子组件显示的内容

作用域插槽

作用域插槽允许父组件访问子组件中的数据。这种插槽可以将数据传递给父组件,使父组件能够使用这些数据。
App.vue

<template><div><h1>父组件</h1><Child><template v-slot:student-slot="{ student }"><div class="student-info"><h3>学生信息:</h3><p class="student-name">姓名: {{ student.name }}</p><p class="student-age">年龄: {{ student.age }}</p><p class="student-grade">年级: {{ student.grade }}</p></div></template></Child></div>
</template><script>
import Child from './Child.vue';export default {components: { Child },name: 'Parent'
}
</script><style scoped>
h1 {color: #333; /* 主标题颜色 */
}.student-info {border: 1px solid #4CAF50; /* 边框颜色 */padding: 10px;border-radius: 5px;background-color: #f9f9f9; /* 背景颜色 */margin-top: 10px;
}.student-name {font-weight: bold; /* 姓名加粗 */color: #2196F3; /* 姓名颜色 */
}.student-age,
.student-grade {color: #555; /* 年龄和年级颜色 */
}
</style>

Child.vue

<template><div><h2>子组件</h2><slot name="student-slot" :student="student"><p>没有学生信息可显示。</p></slot></div>
</template><script>
import { ref } from 'vue';export default {name: 'Child',setup() {// 定义一个学生对象const student = ref({name: '张三',age: 20,grade: '大二'});return {student};}
}
</script>

解释:

 <template v-slot:student-slot="{ student }">引用插槽时,冒号后面是插槽的name

student-slot可以简写为#student-slot,在UI库中常见这样的简写,例如element-plus可以看到大量的#default。

🔍理解

该怎么理解父子组件的关系?

  • 父子组件的关系就像孩子的压岁钱,孩子的压岁钱可能有很多想法,当父亲同意时孩子才能去实现。如果父亲说压岁钱只能买书,那小孩想要买玩具就不会被实现。
  • 记忆:子组件中插槽的name就是小孩的名字,一个父亲可能有很多小孩,要给每个孩子指定行为用他们用name来指定;

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com