文章内容:这里只有vue中父子组件传参、路由间的传参
(另外还有vuex、储存本地、中央bus等方式);
https://www.cnblogs.com/jing-zhe/p/11588401.html
一、父子组件
1.1父传子(props)
import child from "./child";
export default {
data() {
return {
msg:"666"
}
},
components: {
child
}
};
export default {
// 2.接收:props接收父组件参数,data1与data2为传递参数的参数名,与父组件内同名
props: ["data1", "data2"],
data() {
return {
data: "默认值"
};
},
// 3.使用:直接用this调用
mounted() {
this.data = this.data1;
}
};
这里要稍微注意一下,父组件所传递参数如果是需要在生命周期中获取赋值,就不能绑定在mounted中,否则子组件方法中this调用不会成功。生命周期顺序:父beforeMount->子beforeCreate……子mounted->父mounted
1.2子传父($emit)
export default {
data(){
return{
cmsg:'我是子组件的参数'
}
},
methods: {
toFather(){
// 1.子组件触发父组件方法
// $emit第一个参数为所要触发的父组件函数,函数名可自定义但要与父组件中对应函数名同名
// $emit第二个参数就是子组件向父组件传递的参数
this.$emit('receive',this.cmsg);
}
},
};
import child from "./child";
export default {
data() {
return {
fmsg:''
};
},
methods: {
// 接收子组件参数,赋值
fromChild(data){
this.fmsg=data;
}
},
components: {
child
}
};
二、路由间的参数传递(query和params)
query和parmas的使用方式大致相同,这里简单介绍一下路由配置、参数的传递和调用
2.1params,参数显示在url
// router的配置
{
path: "/two/:id/:data", // 跳转的路由后加上/:id,多个参数继续按格式添加,数据按顺序对应
name: "two",
component: two
}
// 跳转,这里message为123
this.$router.push({
path: `/two/${this.message}/456` // 直接把数据拼接在path后面
});
// 接收
created() {
this.msg1=this.$route.params.id // 123
this.msg2=this.$route.params.data // 456
}
// url显示,数据显示在url,所以这种方式传递数据仅限于一些不那么重要的参数
/two/123/456
2.2params,参数不显示在url,刷新页面数据消失
// router的配置
{
path: "/two",
name: "two",
component: two
}
// 跳转,这里message为123
this.$router.push({
name: `two`, // 这里只能是name,对应路由
params: { id: this.message, data: 456 }
});
// 接收
created() {
this.msg1=this.$route.params.id // 123
this.msg2=this.$route.params.data // 456
}
// url显示,数据不显示在url
/two
2.3query,参数显示在url
// router的配置
{
path: "/two",
name: "two",
component: two
}
// 跳转,这里message为123
this.$router.push({
path: `/two`, // 这里可以是path也可以是name(如果是name,name:'two'),对应路由
query: { id: this.message, data: 456 }
});
// 接收
created() {
this.msg1=this.$route.query.id // 123
this.msg2=this.$route.query.data // 456
}
// url显示,数据显示在url
/two?id=123&data=456