vue踩坑:slot插槽,vue路由传值
程序员文章站
2024-03-25 11:15:28
...
slot 插槽。主要功能就是实现内容分发,简单来说,就好像把一个位置放在组件里,父组件调用子组件时,传内容(可以是一个标签)过去,组件相应的显示。如果父组件没有传值,就显示设置好的默认内容。
比如 :
父组件中:
<template>
<div class="home">
<appHeader ></appHeader>
<appSection ></appSection>
<appFooter >
<p slot="footmess">传递到slot的内容</p>
</appFooter>
</div>
</template>
子组件中:
<template>
<div class="app-footer">
<div class="copyright">
demo footer
<slot name="footmess">默认内容</slot>
</div>
</div>
</template>
显示结果:
通过slot 标签接受传递的p标签内容;
如果:父组件并没有传递内容给子组件,则会显示slot标签里设置的默认信息
父组件:
<template>
<div class="home">
<appHeader ></appHeader>
<appSection ></appSection>
<appFooter >
</appFooter>
</div>
</template>
子组件:
<template>
<div class="app-footer">
<div class="copyright">
demo footer
<slot name="footmess">默认内容</slot>
</div>
</div>
</template>
显示效果:
ps: 只传递单个标签,或没有标签,只有内容时,子组件放置一个slot标签就可以接收,不用设置name之类的属性,当有多个标签传递过去的时候,就要通过name属性,将slot标签和传递来的标签对应。
此外,父组件还可以传全局注册的组件到slot
router传值:
router有好几种;较为简单的就是直接再router-link 标签里通过to属性传值
<router-link :to="{name:'add_supplier',params:{user:'全国代理'}}" ><el-menu-item index="5-1">新增全国代理</el-menu-item></router-link>
<router-link :to="{name:'add_store',params:{user:'门店'}}"><el-menu-item index="5-2">新增门店</el-menu-item></router-link>
然后在去的页面中拿到值:传的值不需要用什么方法接收,直接就可以使用,this.$route.params.user,就是我传来的user的值
在代码中我传的值 user:'全国代理',都是可以用变量代替的。
ps:如果router传值到同一个页面的话,如上图,add_supplier,add_store,是同一个页面。router中index.js配置如下:
import add_supplier from '@/components/add_list'
import add_store from '@/components/add_list'
{
path: '/add_supplier',
name: 'add_supplier',
component: add_supplier
},
{
path: '/add_store',
name: 'add_store',
component: add_store
}
中间代码省略了,只贴了重要代码。使用中路由没有发生变化,因为,只有在第一次进入的时候会因为created
执行。在这两个页面之间进行切换,是不会触发这个执行的。所以我们可以监听路由的变化,如果变化了更改掉页面的内容。
解决办法:
watch:{
"$route":function(to,from){
//from 对象中包含当前地址
//to 对象中包含目标地址
//其实还有一个next参数的,这个参数是控制路由是否跳转的,如果没写,可以不用写next()来代表允许路由跳转,如果写了就必须写next(),否则路由是不会生效的。
this.add_type=this.$route.params.user,//这之后的代码用于路由改变了,要执行的动作
this.ruleForm.rankChoose=this.$route.params.user
}
}
推荐阅读
-
vue踩坑:slot插槽,vue路由传值
-
vue中父子组件注意事项,传值,slot应用
-
vue路由报错Navigating to current location ("/login") is not allowed踩坑总结
-
vue踩坑填坑(二):组件之间的传值问题
-
vue项目笔记(23)-动态路由传值及iconfont更新使用
-
vue路由配置、传值、编程式导航
-
vue踩坑记:把对象中的数据同时赋给了两个变量,改变一个对象的值,另一个对象也变化了
-
vue-router 前端路由之路由传值的方式详解
-
vue-router 前端路由之路由传值的方式详解
-
vue中父子组件注意事项,传值及slot应用技巧