javascript - 使用 Vue JS 从不同的路由发送 props 到同一个组件
问题描述
我正在使用 Vue JS 构建一个菜单应用程序。有人告诉我,如果样式保持不变,则只需要使用 1 个组件。所以这意味着我必须使用动态数据。每个菜单/子菜单有 3 到 4 个菜单链接。我正在寻找一种将带有数据的变量发送到组件并提出“道具”的解决方案。但是我找不到将不同路由的道具发送到同一个组件并检查您正在使用哪个路由以了解哪些道具要加载到 html 中的方法。
我已经尝试将道具加载到模板中,并且效果很好。但是在 html 的同一部分发送和替换 prop 值是我还没有弄清楚的事情。
{ path: '/list', component: List, props: { url: 'www.google.com' } }
<template>
<div class="container">
<h1>Welkom</h1>
<div class="row">
<div class="col-md-6">
<router-link to='/weed'>Wiet</router-link>
</div>
<div class="col-md-6">
<router-link to='/stuff'>Stuff</router-link>
</div>
<div class="col-md-6">
<router-link to='/joint'>Joint</router-link>
</div>
<div class="col-md-6">
<router-link to='/edibles'>Edibles</router-link>
</div>
</div>
</div>
</template>
应该是<router-link>
动态的,具体取决于您所在的路线,因此它可以加载到不同的菜单项中。
我想要一个菜单,根据您所在的路线加载不同的路线链接。
解决方案
我认为您应该使用程序化导航和查询参数,例如
router.push({ path: 'register', query: { plan: 'private' } })
所以供您的应用程序使用
<div class="col-md-6"
@click="$router.push({ path: '/edibles',
query: { url: 'www.google.com', other: 'etc' }})"
>Edibles</div>
$route.params.url
您可以使用模板、this.$route.params.url
函数和计算以及 vue 组件实例的所有其他属性在导航组件中访问这些查询参数。
另请查看https://router.vuejs.org/guide/essentials/navigation.html了解详情
根据评论编辑
我认为你仍然应该使用 Programmatic Navigation with
router.push({ name: 'user', params: { userId } })
提供的参数可以用作组件的道具,如下所示
const User = {
props: ['id'],
template: '<div>User {{ id }}</div>'
}
const router = new VueRouter({
routes: [
{ path: '/user/:id', component: User, props: true }
]
})
只记得props: true
在路线定义中设置!
推荐阅读
- time - Linux walltime 运行速度慢了大约 5 倍
- javascript - 添加到对象的常量不再是常量
- tensorflow - Keras 输入层
- sql - 如何为上一年的搜索总销售额创建查询
- flutter - 当来自 Storage Firebase 的图像链接到 CloudFirestore 时,无法获取正确的 URL
- java - 具有强耦合依赖的Dockerizer Maven多模块项目(angular + java)
- angular - 未应用使用 highcharts 的成交量图表的颜色
- php - 如何使用不同选项优化大量 curl 句柄
- typescript - 如何修复错误“找不到此相关模块:* ./src/main.js in multi (webpack)-dev-server”在 npm run serve in vue3.x with typescript?
- vb.net - VB 2019 使用书签向 MS Word 发送数据