vue子组件在script标签里接受传来的this.$route.params.username参数
时间: 2023-09-30 21:07:33 浏览: 56
您好!针对您的问题,您可以在 Vue 子组件的 `created` 或者 `mounted` 钩子函数里通过 `this.$route.params.username` 来获取从父组件传递过来的参数。例如:
```
<template>
<div>
<p>接受到的参数值为:{{ username }}</p>
</div>
</template>
<script>
export default {
name: 'ChildComponent',
data() {
return {
username: ''
}
},
created() {
// 在 created 钩子函数中获取参数值
this.username = this.$route.params.username
}
}
</script>
```
当然,在使用之前,您需要确保父组件中已经传递了 `username` 参数,并且路由参数已经正确设置。
相关问题
export default{ created(){ this.username=this.$route.params.username }, data(){ return{ username:"", context:"", } },
这段代码是 Vue 2 的代码,使用了 `export default` 导出一个 Vue 组件对象。
该组件对象中包含了 `created()` 和 `data()` 两个生命周期函数。在 `created()` 函数中,将 `this.username` 赋值为 `$route.params.username`,表示从路由参数中获取 `username` 值并赋值给 `username` 属性。
在 `data()` 函数中,定义了一个包含 `username` 和 `context` 两个属性的数据对象,并将其作为函数返回值。这里使用了 Vue 的数据响应式机制,当 `username` 或 `context` 发生变化时,相关的 DOM 会自动更新。
需要注意的是,Vue 3 中的组件导出方式与 Vue 2 有所不同,应该使用 `export default { }` 的方式导出组件对象。同时,Vue 3 中的生命周期函数也有所变化,需要注意区别。
{ path: '/user/:name' }从 /user/sid 跳转到 /user/moon 时,侦听器中监听this.$route.params.name,由于它不是 data 中声明的变量,因此侦听器方法不会执行吗
在Vue Router中,`{ path: '/user/:name' }`这样的路径表示一个动态路由,`:name`是一个动态参数,当我们在浏览器地址栏通过 `/user/sid` 或 `/user/moon` 进行跳转时,`:name`会被实际的URL参数替换,例如`sid`或`moon`。
对于在组件内部监听`this.$route.params.name`的情况,这并不是数据绑定,而是一种路由参数变化的监听。当你设置了一个属性来监听路由参数的变化,比如:
```javascript
export default {
computed: {
userName() {
return this.$route.params.name;
}
},
mounted() {
this.$watch('$route', (to) => {
console.log('路由参数 name 变化了:', to.params.name);
}, { immediate: true });
}
}
```
在这个例子中,当`/user/sid`跳转到`/user/moon`时,`$route`对象会改变,触发`mounted`钩子中的`watch`,并打印出新的`name`值,即使这个属性本身并未在"data"中声明。
所以,当`this.$route.params.name`的值发生变化时,即使该值未直接在data中声明,监听器方法依然会执行。`immediate: true`使得首次进入组件时也立即执行一次,以便初始化状态。
阅读全文