vue scope-slot,vue作用域插槽slot-scope详解

  vue scope-slot,vue作用域插槽slot-scope详解

  本文主要介绍了对Vue中slot-scope的深入理解。本教程非常适合初学者。通过示例代码进行了非常详细的介绍,对大家的学习或工作有一定的参考价值。下面让我们跟随边肖一起学习。

  百度上已经有很多关于slot-scope的文章了,但是感觉都是以前没学好,回去学的人。他们都使用了。Vue文件,我觉得不太适合初学者,所以我就写一个给初学者。

  先抛例程:

  !声明文档类型

  html lang=en

  头

  meta charset=UTF-8

  通过时段/标题分发标题组件的内容

  Script src=您的vue地址,请下载最新版本/script

  脚本

  Vue.component(测试槽,{

  //插槽允许有默认内容

  模板:

  ` div

  strongError错误!/strong

  插槽/插槽

  /div

  `,

  数据:函数(){

  返回{

  姓名:“佩里”

  }

  }

  });

  //命名插槽

  Vue.component(插槽名称,{

  模板:

  ` div

  页眉

  插槽名称=header/slot

  /页眉

  主要的

  插槽/插槽

  /main

  页脚

  插槽名称=页脚/插槽

  /页脚

  /div

  `

  });

  //作用域插槽

  Vue.component(todo-list ,{

  inheritantrs:false,

  道具:{

  todos:[数组,对象]

  },

  模板:

  ` ul

   Li v-for= todo in todos :key= todo . id style= display:block;

  slot:data= todo { { todo . text } }/slot

  /李

  /ul

  `

  });

  /脚本

  风格

  李{

  列表样式:无;

  显示:内嵌-块;

  字体大小:25px

  }

  /风格

  /头

  身体

  div id=应用程序

  !-1,slot内容Slot可以接收任何内容,代码,包括组件-

  一些不好的事情发生了。你是谁,我认识你吗/测试槽

  测试槽

  一些不好的事情发生了。

  !-允许变量,但变量必须在此范围内才能生效,其中name的值将是 fork-

  H3 {{name}}/h3

  Img= img/flower.jfif alt=图片无法显示

  /测试槽

  !-2.命名槽slo有一个特殊的属性名,可以使槽命名为-

  插槽名称

  H3劝导/h3

  p年轻人不努力,老年人悲伤/p

  p时光飞逝,日月如梭/p

  模板slot=header

  保险商实验所

  li主页/li

  时间差不多了/李

  关于李生平/李

  李谈未来/李

  /ul

  /模板

  p你好/p

  p slot=页脚

  End /p

  p广东ICP为6545646456415/p

  /p

  /插槽名称

  !-使用作用域插槽,这是通过slot-scope实现的-

  todo-list :todos=todos

  模板插槽范围=slotProps

  span v-if= slot props . data . is true /span

  {{slotProps.data.text}}

  /模板

  /todo-list

  !-使用ES2015结构语法-

  todo-list :todos=todos

  模板插槽范围=“{ data }”

  span v-if=data.isTrue/span

  {{data.text}}

  /模板

  /todo-list

  /div

  脚本

  新Vue({

  埃尔: #app ,

  数据:{

  名称:“岔路口”,

  todos:[

  {text:A ,id:1,isTrue:true},

  {text:B ,id:2,isTrue:true},

  {text:C ,id:3,isTrue:false},

  {text:D ,id:4,isTrue:true},

  ],

  //slotProps:“”

  }

  })

  /脚本

  /body

  /html

  公共槽和命名槽也写在例程中。这个我就不说了,就说说作用域槽吧。首先从“作用域槽”这个名字说起。最初,父组件的模板是不能在子组件模板中使用的数据。官网里特别强调:父组件模板里的东西都会在父范围内编译;子模板中的所有内容都将在子范围内编译。这句话其实挺难理解的,随便举个例子,

  测试槽

  一些不好的事情发生了。

  !-允许变量,但变量必须在此范围内才能生效,其中name的值将是 fork-

  H3 {{name}}/h3

  Img= img/flower.jfif alt=图片无法显示

  /测试槽

  这是我上面的例子,也就是说,这里的名字必须在当前组件中,不能是test-slot组件内部的数据,这是它的作用域限制。数据名属于父组件的作用域,所以只能是父组件的数据。但是slot-scope的出现使得父组件可以调用子组件内部的数据,子组件的数据通过slot-scope属性传递给父组件。

  //作用域插槽

  Vue.component(todo-list ,{

  inheritantrs:false,

  道具:{

  todos:[数组,对象]

  },

  模板:

  ` ul

   Li v-for= todo in todos :key= todo . id style= display:block;

  //这里:data="todo "表示子组件todo的数据传递给父组件。

  slot:data= todo { { todo . text } }/slot//todo . text是默认值,父组件将覆盖它。

  /李

  /ul

  `

  });

  !-使用作用域插槽,这是通过slot-scope实现的-

  todo-list :todos=todos

  模板插槽范围=slotProps

  span v-if= slot props . data . is true /span

  {{slotProps.data.text}}

  /模板

  /todo-list

  这是它的使用方法。slot-scope将接收从子组件传递的名为data、值为todo的数据。需要注意的是,slot-scope接收一个对象,这里命名为slotProps,意思是你传递的数据会作为slotProps的一个属性,所以你需要slotProps.data来调用数据。如前所述,数据的值是todo。todo是什么?Todo由todos遍历,所以它是一个对象。

  新Vue({

  埃尔: #app ,

  数据:{

  名称:“岔路口”,

  todos:[

  {text:A ,id:1,isTrue:true},

  {text:B ,id:2,isTrue:true},

  {text:C ,id:3,isTrue:false},

  {text:D ,id:4,isTrue:true},

  ],

  //slotProps:“”

  }

  });

  我们已经了解了slot-scope特性,那么他的应用场景是什么呢?我们可以想象一下,别人写了一个组件,组件被打包了,但是他觉得数据的显示风格应该是用户自己定义的,就像我们一样。我们希望列表的样式由用户定义,例如,我添加了一个勾号。初始数据由我们传入,但数据必须由子组件处理。编写组件的人肯定希望显示经过处理的数据。这时候,slot-scope就显得极为重要了。

  总结

  关于深入理解Vue中slot-scope的这篇文章到此为止。关于理解Vue中slot-scope的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: