Vue知识点总结(17)——作用域插槽(超级详细)

news/2024/7/9 23:50:28 标签: vue, js, html, 前端

之前分别了解了匿名插槽具名插槽
这期我们的任务是作用域插槽
作用域插槽虽然用的不多,但是还是挺重要的。

我们以一个实际需求展示作用域插槽,因为作用域插槽用的确实不多,只能在实际需求中展示它的意义。

需求:

  • 已经开发了一个待办事项列表的组件,很多模块都在用
  • A B
  • 之前数据格式和引用接口不变,正常显示
  • 新功能模块增加对勾

需求解释起来有点模糊,到时候看页面的内容就知道咋回事了。

html">   <div id="app">
        <App></App>
    </div>
  <script>
        const todoList = {
            data () {
                return {
                    
                }
            },
            props: {
                todos:Array,
                defaultValue:[]
            },
            template:`
                <ul>
                    <li v-for='item in todos' :key='item.id'>
                        <slot :itemValue = 'item' ></slot>
                        {{item.title}}
                    </li>
                </ul>
            `
        }
        const App = {
            data () {
                return {
                    todoList:[{
                        title:'大哥你好么',
                        isComplate:true,
                        id:1
                    },{
                        title:'小弟我还行',
                        isComplate:false,
                        id:2
                    },{
                        title:'你在干什么',
                        isComplate:false,
                        id:3
                    },{
                        title:'抽烟喝酒烫头',
                        isComplate:true,
                        id:4
                    }]         
                }
            },
            components: {
                todoList
            },
            template:`
                <todoList :todos='todoList'>
                    <template v-slot='data'>
                        <label>{{data}}</label>
                        <input type='checkbox' v-model='data.itemValue.isComplate' />
                    </template>
                </todoList>
            `
        }
        new Vue({
            el:'#app',
            data:{

            },
            components: {
                App
            }
        });
    </script>

首先我们写了一个局部组件todoList。然后比较重要的东西就是props,这个东西我们之前在组件通信里面已经讲过了。然后template模板中,写了一个ul,li的v-for循环,循环的是props里面拿到的todos集合

li的内容,我们依然看到了插槽标签slot,然后在slot标签的属性上,我们写了一个 :itemValue=‘item’,这个东西我们暂且先搁置,等看完下面这个组件再来说这里这个 **:itemValue=‘item’**的作用。

我们还写了一个App局部组件,在这个组件的data中,我们写了一个todoList数组对象,用于到时候页面的内容展示
components属性中挂载todoList组件。
template模板中的内容很重要,要重点看一下。

首先我们调用todoList这个组件,在组件的属性上,写了 :todos=‘todoList’,这个是用来组件间通信传值的,不懂的同学可以翻看一下前面的内容。:todos='todoList’对应props: [‘todos’]。作用就是把App组件中的todoList数组对象传给todoList组件

然后在todoList组件的内部,我们写了一个template标签占据插槽的位置,这个和前面的具名插槽有点类似。在template标签上,还写了一个v-slot=‘data’,可能很多同学不知道这个data是干什么的。所以我们在页面中会输出一下这个data的内容,这个和我们的需求实现是没有任何关系的,只是为了方便同学们了解这个data中到底有哪些东西。
再之后,就是一个input标签展示数据了。

先看一下页面渲染出来的东西吧。
在这里插入图片描述
我们可以看到,首先渲染出来了一组对象,这个就是v-slot='data’data的内容。这也是我们前面提到的todoList组件中,:itemValue='item’的itemValue是哪儿来的了。这个并不是固定的,这个名字可以随便改。我把它改成Value之后,页面的内容也可以正常的渲染。
在这里插入图片描述

然后就是一个单选框和一个title用于数据的展示。

这样来做,就可以很方便的改变指定的单选框的内容,并且不影响其它的单选框。也就是作用域插槽的意义。

可能理解起来会有点错乱的感觉,因为这个东西确实用的不多,但是在一些特定的业务场景下,起到很重要的作用。

还是要牢记,Vue不会生产没有意义的内容,任何它连带的东西,都有其对应的应用场景和它的意义,不然它就不会存在。任何优秀的框架都是这样

有微信小程序课设、毕设需求联系个人QQ:505417246

关注下面微信公众号,可以领取微信小程序、Vue、TypeScript、前端、uni-app、全栈、Nodehtml" title=js>js、Python等实战学习资料
最新最全的前端知识总结和项目源码都会第一时间发布到微信公众号,请大家多多关注,谢谢!

在这里插入图片描述


http://www.niftyadmin.cn/n/1576583.html

相关文章

《R语言数据挖掘:实用项目解析》——第1章,第1.3节数据类型转换

本节书摘来自华章出版社《R语言数据挖掘&#xff1a;实用项目解析》一书中的第1章&#xff0c;第1.3节数据类型转换&#xff0c;作者&#xff3b;印度&#xff3d;普拉迪帕塔米什拉&#xff08;Pradeepta Mishra&#xff09;&#xff0c;更多章节内容可以访问云栖社区“华章计算…

Vue知识点总结(18)——生命周期(超级详细)

码字不易&#xff0c;有帮助的同学希望能关注一下我的微信公众号&#xff1a;Code程序人生&#xff0c;感谢&#xff01; 这期的主题是Vue的生命周期。 先说一下什么是生命周期。 百度百科上是这样说的&#xff1a; 生命周期就是指一个对象的生老病死。 我们每个人都会经历生老…

《TCP/IP路由技术(第二卷)》一1.3 EGP的不足

本节书摘来自异步社区《TCP/IP路由技术&#xff08;第二卷&#xff09;》一书中的第1章&#xff0c;第1.3节&#xff0c;作者【美】Jeff Doyle&#xff0c;CCIE #1919 , Jennifer DeHaven Carroll , 更多章节内容可以访问云栖社区“异步社区”公众号查看 1.3 EGP的不足 TCP/IP路…

微信小程序如何实现转发/分享功能

在微信小程序的开发中&#xff0c;我们经常遇到把当前页面转发给好友的需求。并且大部分时候&#xff0c;转发的页面都是带参数的。这里面坑还是比较多的。 <button open-type"share" type"primary">分享给好友</button>首先我们先写一个butto…

oracle安装登录sqlplus / as sysdba然后报错ERROR: ORA-01031 insufficient privileges

解决办法&#xff1a; 一般情况下检查操作系统的登录用户是否包含在ORA_DBA组中。 控制面板->管理工具->计算机管理->系统工具->本地用户和组->ORA_DBA组。 如果ORA_DBA组中没有系统登录用户添加上即可。 但我的操作系统版本是没有--本地用户和组--这个选项&…

《计算复杂性:现代方法》——习题

本节书摘来自华章计算机《计算复杂性&#xff1a;现代方法》一书中的第2章&#xff0c;习题&#xff0c;作者 &#xff3b;美&#xff3d;桑杰夫阿罗拉&#xff08;Sanjeev Arora&#xff09;&#xff0c;博阿兹巴拉克&#xff08;Boaz Barak&#xff09;&#xff0c;译 骆吉洲…

Vue知识点总结(19)——ref属性和$refs的使用(超级详细)

ref是vue提供的非常便利的属性。它可以直接获取页面元素的DOM节点&#xff0c;也可以获取子组件对象。 虽然Vue建议不要随便在vue项目中操作DOM&#xff0c;但是在一些不得已的情况下&#xff0c;必须要操作DOM&#xff0c;ref属性就可以很轻松的实现我们的需求。 还有&#xf…

《趣题学算法》—第1章1.3节加法原理和乘法原理

本节书摘来自异步社区《趣题学算法》一书中的第1章1.3节加法原理和乘法原理&#xff0c;作者徐子珊,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.3 加法原理和乘法原理组合数学中有两条著名的原理——加法原理和乘法原理。利用这两条原理可以快速地解决一些计数问…