Vue-router4 - 使用 传递对象不会传递动态数据

2023-12-01

我经历过这个[电子邮件受保护]对象参数这是有一定关系的。有提到这个https://github.com/vuejs/vue-router-next/issues/494在那条线索中,但我仍然很困惑。

我还尝试使用传递一些数据:to的属性路由器链接成分。我做了两支笔来展示这个问题:

Pen 1成功传递在路由定义中定义的对象。

Pen 2正在尝试传递一个动态对象,但它获取的是一个带有 [Object object] 的字符串,而不是实际对象,如 github 问题中所述。

控制台输出:

[Vue warn]:无效的道具:道具“存储库”的类型检查失败。预期对象,得到具有 > 值“[object Object]”的字符串。 在 在 在 在

所以,如果我明白这一点,最终你不能传递一个动态对象,因为它被解析了,但你可以传递一个静态对象?

我尝试过使用道具:真实和一切,我正在尝试功能模式作为更复杂示例的解决方案

片段:

    <router-link :to="{ name: 'Home' }">Home</router-link>
    <router-view />

    <router-link
      :to="{
        name: 'Repository',
        params: { repository: { one: '1', two: '2' } },
      }">click me</router-link>

v1

    const routes: Array<RouteRecordRaw> = [
    {
      path: "/",
      name: "Home",
      component: Home
    },
    {
      path: "/repo/",
      name: "Repository",
      component: () => import("../components/Repository.vue"),
      props: (route) => {
        console.log("entered route");
        console.log(route);
        return { ...route.params, repository: { one: "1", two: "2" } };
      }
    }];

v2

    const routes: Array<RouteRecordRaw> = [
    {
      path: "/",
      name: "Home",
      component: Home
    },
    {
      path: "/repo/",
      name: "Repository",
      component: () => import("../components/Repository.vue"),
      props: (route) => {
        console.log("entered route");
        console.log(route);
        return { ...route.params };
      }
    }];

您的代码中发生了什么:

正如您在控制台中的警告消息中看到的,您实际上得到了String来自道具而不是Object:

[Vue warn]:无效的道具:道具“存储库”的类型检查失败。 期望的对象,得到字符串

很多人建议使用Vuex并将全球状态设置为解决方案,我相信这不是您想要的。

Solution

为了避免得到[Object, Object]作为传递的数据,您可以做的是在原始页面中将对象字符串化,然后在目标页面上再次将传递的字符串解析为对象。

原始页面/路由器组件

 <router-link
      :to="{
        name: 'Your_Route_Name',
        params: { repository: JSON.stringify({ one: '1', two: '2' }) },
      }">click me</router-link>

在您的目标路由器组件中

<template>
    <div>
        {{ JSON.parse(repository) }}
    </div>
</template>

<script>
export default {
    props: ["repository"],
    setup(props) {
        //Log the parsed object in console. Example shown with Vue3 Composition API but you get the idea.
        console.log(JSON.parse(props.customer));
    }
}
</script>

这样,您将能够按预期传递对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue-router4 - 使用 传递对象不会传递动态数据 的相关文章

随机推荐

  • 如何在nodejs中通过TCP/IP获取传感器数据?

    我有一个带有socket io 的nodejs 应用程序 要测试这一点 请将以下列表保存为 app js 安装 Node 然后 npm install socket io 最后在命令提示符下运行 node app js var http r
  • XSLT 更改命名空间前缀

    我正在尝试将属性转换为元素 与此同时 我想更改 XML 代码的命名空间前缀 XML代码
  • 使用php/Java读取foxpro DB

    我正在寻找一个代码片段 库 用于使用 Linux 服务器上的 php Java 通过网络从第三方 Foxpro DB 读取数据 有可用的图书馆吗 有些人似乎在使用 php 的 Dbase 库 那样有用吗 除了默认值 数据库名 用户名 密码
  • 如何在已经存在于pdf.js中的canvas中绘制矩形

    我在这里使用 pdf js 在画布中渲染我的 pdf 我的代码是 div div class pdfViewer div div 上面的canvas是通过viewer js生成的 现在我试图在我的pdf上绘制矩形 但它没有显示我的矩形 我的
  • 使用 CreateProcess 函数启动时,cmd.exe 在某些情况下不会终止

    我正在通过 C 程序使用 CreateProcess 函数执行批处理命令 我通过检查进程退出代码是否等于除 STILL ACTIVE 之外的任何值来检查进程是否已使用 GetExitCodeProcess 函数终止 这适用于 cmd c e
  • 谷歌服务添加了强制关闭应用程序并显示日志猫错误

    我一直在开发一个简单的应用程序来加载地图视图 我已经遵循了API https developers google com maps documentation android start add a map BUT 执行应用程序强制关闭并出
  • 在WPF中获取数据网格中的多个选定行?

    我想在 WPF 中获得数据网格的多重选择 因为我的业务要求我在数据网格中有一个客户表 它允许多重选择和单选按钮 全部 选定 除选定之外的所有 如果单击选定的或未选定的所有客户 我必须仅提取数据网格中选定的那些客户的数据 请建议解决方案以获取
  • 从 MySQL 数据库中读取一行中的一列

    有没有一种快速而肮脏的方法来从一行中获取一列的值 现在我使用这样的东西 result mysql query SELECT value FROM table WHERE row id 1 row mysql fetch array resu
  • 默认情况下选择 ManyToManyField 中的所有选项

    默认情况下是否可以选择 Django 中 ManyToManyField 生成的多个选择中的所有选项 添加的所有新项目都应在视图中预先选择所有选项 也在添加新项目时 AnotherEntity class AnotherEntity mod
  • 根据可用性在 GPS 和网络提供商之间切换

    public void onCreate locationListener new GeoUpdateHandler locationManager LocationManager getSystemService Context LOCA
  • 在两列上使用 pandas 进行因式分解

    我在 pandas 数据框中有一些数据 如下所示 CAR TYPE MILEAGE FORD 100 FORD 100 FORD 200 FORD 300 VW 100 VW 150 VW 150 VW 300 我想对数据进行 因式分解 为
  • C# FTP 550错误

    我正在尝试通过 FTP 以编程方式下载 C 中的文件 以下是相关代码 显然带有伪造的凭据和 URI try var request FtpWebRequest Create ftp ftp mydomain com folder file
  • Zxing条码源码集成到Android项目中[重复]

    这个问题在这里已经有答案了 我想将 zxing 源代码集成到我的 Android 应用程序中 我已经下载了 zxing1 5 并将整个代码集成到我的应用程序中 并且我通过意图调用活动 CaptureActivity 它仅显示相机视图 但不扫
  • 当 WooCommerce 中有运费时如何隐藏免费送货

    我正在尝试计算乔治亚州不同城市的运费 我找到了这段代码 function ace change city to dropdown fields cities array Tbilisi city2 etc city args wp pars
  • 将类标记为final是否也会使每个函数成为final?

    正如标题所说 我想知道是否通过将类设为final 并让编译器进行速度优化 我是否还需要将函数标记为final 否则它们会自动变为final final应用于类使其不可子类化 因此在任何情况下您都不能覆盖任何函数或属性 因为为此您必须创建一个
  • 使用 COM 时,为什么 TypeName() 从 .GetType 和 TypeOf 返回不同的结果?

    我觉得了解这些函数工作原理的差异会让我受益匪浅 这样我就可以更好地理解何时使用每个函数 我在使用两种不同的互操作性 Excel 和 EPDM 时遇到了非常困难的情况 这两种互操作性都广泛使用了弱类型参数 我在使用返回的对象并将其转换为正确的
  • 防止屏幕捕获软件捕获应用程序屏幕

    我正在研究考试系统 作为系统的安全部分 我不希望任何人通过屏幕录制或使用如此多的免费应用程序进行桌面共享来远程泄露试卷 首先我搜索我可以阻止此类应用程序吗 但我不这么认为 因为记录 共享屏幕的方法有很多 然后我开始了解 HDCP 但我想它只
  • S3 到 Redshift:复制但访问被拒绝

    我们以前每天使用 COPY 命令从没有特定策略的存储桶将文件从 s3 复制到 Redshift COPY schema table staging FROM s3 our bucket X YYYY MM DD CREDENTIALS aw
  • 计算字符串中的大写字母

    如何使用 MySQL 查询计算大写字母 我现在正在尝试 COUNT IF MATCH post text AGAINST A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 NULL
  • Vue-router4 - 使用 传递对象不会传递动态数据

    我经历过这个 电子邮件受保护 对象参数这是有一定关系的 有提到这个https github com vuejs vue router next issues 494在那条线索中 但我仍然很困惑 我还尝试使用传递一些数据 to的属性路由器链接