vue 静态参数_Vue 参数传递

本文详细介绍了Vue中父子组件之间的参数传递,包括props的使用和$emit方法,以及路由间的参数传递,分别通过params和query实现,并强调了不同场景下选择参数传递方式的注意事项。
摘要由CSDN通过智能技术生成

一、父子组件

1.1父传子(props)

这里是father组件
这是父组件要传给子组件的参数:{{msg}}

import child from "./child";

export default {

data() {

return {

msg:"666"

}

},

components: {

child

}

};

这里是child组件
接受的父组件动态参数:{{ data1 }}
接受的父组件静态参数:{{ data2 }}
接受的父组件参数:{{ data }}

export default {

// 2.接收:props接收父组件参数,data1与data2为传递参数的参数名,与父组件内同名

props: ["data1", "data2"],

data() {

return {

data: "默认值"

};

},

// 3.使用:直接用this调用

mounted() {

this.data = this.data1;

}

};

页面数据效果如下

82ee10540e209b1818e520a629332300.png

这里要稍微注意一下,父组件所传递参数如果是需要在生命周期中获取赋值,就不能绑定在mounted中,否则子组件方法中this调用不会成功。生命周期顺序:父beforeMount->子beforeCreate……子mounted->父mounted

1.2子传父($emit)

这里是child组件

export default {

data(){

return{

cmsg:'我是子组件的参数'

}

},

methods: {

toFather(){

// 1.子组件触发父组件方法

// $emit第一个参数为所要触发的父组件函数,函数名可自定义但要与父组件中对应函数名同名

// $emit第二个参数就是子组件向父组件传递的参数

this.$emit('receive',this.cmsg);

}

},

};

这里是father组件
接收子组件参数:{{fmsg}}

import child from "./child";

export default {

data() {

return {

fmsg:''

};

},

methods: {

// 接收子组件参数,赋值

fromChild(data){

this.fmsg=data;

}

},

components: {

child

}

};

点击按钮后页面效果图如下

fdf9ab7d5e873a77c7ad0c0c489dbce4.png

二、路由间的参数传递(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值