温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何vue中使用slot分发内容

发布时间:2021-02-23 17:09:41 来源:亿速云 阅读:154 作者:Leah 栏目:web开发

如何vue中使用slot分发内容?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

将父组件的内容放到子组件指定的位置叫做内容分发

//在父组件里使用子组件 <son-tmp>	<div>我是文字,我需要放到son-tmp组件里面制定的位置</div> </son-tmp>

单个插槽

父组件app.vue

<template>  <div id="app">   <test-slot>    <span>我是父组件里的文字,但是我要被放到子组件里</span>   </test-slot>  </div>  </template>    <script> import testSlot from './components/testSlot' export default {  data(){   return {       }  },  components:{   testSlot  } } </script> <style> </style>

子组件testSlot.vue

<template>  <div>   <h4>test-slot</h4>   //父组件里的span会替换掉slot所以这里的123是看不见的   //如果父组件在使用子组件testSlot的时候不在里面加内容则这里的slot会显示出来   <slot>123</slot>   </div>  </template>    <script> export default {   data(){   return {       }  } } </script> <style> </style>

效果图:

如何vue中使用slot分发内容

多个插槽也叫具名插槽

具名插槽就是将某个名字的内容插到子组件对应名字里面去

父组件app.vue

<template>  <div id="app">	//使用子组件testSlot   <test-slot>	 //slot=one这个div会替换掉子组件里name="one"的slot标签    <div slot="one">     <span>one</span>     <span>第一个</span>    </div>     //这个div没有用slot指定名字所以会替换掉子组件里没有name属性的slot标签    <div>     <span>此div没有slot</span>    </div>    //slot=two这个div会替换掉子组件里name="two"的slot标签    <div slot="two">     <span>two</span>     <span>第二个</span>    </div>    </test-slot>  </div>  </template>    <script> import testSlot from './components/testSlot' export default {  data(){   return {       }  },  components:{   testSlot  } } </script> <style> </style>

子组件testSlot.vue

<template>  <div class="testSlot">   <div class="noneSlot">    <slot></slot>    </div>   <div class="test-two">    <slot name="two"></slot>    </div>   <div class="test-one">    <slot name="one"></slot>    </div>  </div>  </template>    <script> export default {   data(){   return {       }  } } </script> <style> </style>

如何vue中使用slot分发内容

作用域插槽(将子组件的值传到父组件供使用)

父组件app.vue

<template>  <div id="app">   <h3>app</h3>    <test-slot :items="items">     <template slot-scope="props">      <span>{{ props.addr }}</span>      <span>{{ props.cname }}</span>      <span>{{ props.age }}</span>     </template>    </test-slot>  </div> </template> <script> import testSlot from './components/testSlot.vue' export default {  data (){   return {    items:[     { text:'文字1' , cname:'tom' , addr:'usa' },     { text:'文字2' , cname:'wangwu' , addr:'uk' },     { text:'文字3' , cname:'zhangsan' , addr:'un' }    ]   }  },  methods:{     },  components:{   testSlot  } } </script> <style> </style>

子组件testSlot.vue

<template>  <div class="hello">   <slot :cname="items[2].cname"></slot>    <slot :addr="items[2].addr"></slot>    <slot age="18"></slot>   </div> </template> <script> export default {  data () {   return {    num:100   }   },  props:['items'],  methods:{     },  created(){   console.log('items',this.$props.items);  } } </script> <style scoped> </style>

看完上述内容,你们掌握如何vue中使用slot分发内容的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI