Vue:不同页面之间共享数据

2023-12-12

var app = new Vue({
    el: '#app',
    data: {
        sharedData : ""
    },

    methods: {
        goToPageB: function() {
             if (some condition is met) {
                window.location.href="pageB.html";
                sharedData = 1234;  <------- I want to access sharedData in page B as well
             } 

        } 
    }

我是 Vue 新手,我制作了一个虚拟登录页面,并尝试让我的主页根据用户名显示共享数据。但我的应用程序重定向到页面 B 后数据总是丢失。我该如何解决此问题?


您可以通过sharedData作为 URL 参数:'window.location.href="pageB.html?sharedData=myData"' 并在其他页面中访问它。如果你一直在使用vue-路由器,你可以这样做

this.$route.params.sharedData

由于您没有使用它,因此您可以使用普通的 javascript 来获取它,但是您必须编写一个如下所示的辅助函数来获取参数,如下所示here

var QueryString = function () {
  // This function is anonymous, is executed immediately and 
  // the return value is assigned to QueryString!
  var query_string = {};
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
        // If first entry with this name
    if (typeof query_string[pair[0]] === "undefined") {
      query_string[pair[0]] = decodeURIComponent(pair[1]);
        // If second entry with this name
    } else if (typeof query_string[pair[0]] === "string") {
      var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
      query_string[pair[0]] = arr;
        // If third or later entry with this name
    } else {
      query_string[pair[0]].push(decodeURIComponent(pair[1]));
    }
  } 
  return query_string;
}();

Vue way

您可以使用集中状态管理管理您的共享数据,除非您重新加载页面,否则这些数据将跨页面可用。

您可以定义您的状态,如下所示:

var store = {
  state: {
    message: 'Hello!'
  },
  setMessageAction (newValue) {    
    this.state.message = newValue
  },
  clearMessageAction () {
    this.state.message = 'action B triggered'
  }
}

您可以在组件中使用它,如下所示:

var vmA = new Vue({
  data: {
    privateState: {},
    sharedState: store.state
  }
})
var vmB = new Vue({
  data: {
    privateState: {},
    sharedState: store.state
  }
})

更好的 Vue 方式:Vuex way

然而,Vue 生态系统有一个专门的redux也像状态管理系统一样,称为vuex这在社区中很受欢迎。您将所有项目/用户等存储在 vuex 中state,并且每个组件可以read/update来自中央国家。如果一个组件更改了它,则更新的版本可反应性地供所有组件使用。您可以使用以下方式在一个地方启动数据actions在 vuex 本身。

架构图如下:

enter image description here

你可以看看我的回答here关于类似的问题,请查看有关如何调用 api 并将数据保存在存储中的示例。

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

Vue:不同页面之间共享数据 的相关文章

随机推荐

  • START_STICKY 和 START_NOT_STICKY

    有什么区别START STICKY and START NOT STICKY在android中实现服务时 谁能指出一些标准示例 这两个代码仅在手机内存不足并在服务完成执行之前终止服务时才相关 START STICKY告诉操作系统在有足够的内
  • 在scala中序列化优先级队列

    我正在尝试序列化一个可变的PriorityQueue在 scala 2 10 中 我得到了NotSerializableException将对象写入 ObjectOutputStream 时 我做了一个简单的测试用例 import java
  • 如何在 Zend Framework 2 中访问路由、发布、获取等参数

    zf2中如何获取与页面请求相关的各种参数 像 post get 参数 正在访问的路由 发送的标头和上传的文件 最简单的方法是使用参数插件 在 beta5 中引入 它具有实用方法 可以轻松访问不同类型的参数 一如既往 读书测试对于理解某物应该
  • 我应该使用事件、信号量、锁、条件或其组合来管理安全退出多线程 Python 程序吗?

    我正在编写一个多线程Python程序 其中主线程和它生成的其他线程作为守护进程运行 但不是Thread daemon True 它们在某些目录中查找某些文件 并在它们存在时对其执行操作 一个 任何线程中可能会发生错误 这将需要整个程序退出
  • 如何使用 MASM 在控制台上进行输入/输出? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我用谷歌搜索了又搜索 但没有发现任何有用的东西 如何将输出发送到控制台 并通过程序集接受来自控制台的用户输入 我正在使用 MASM32 正如 filofel 所说 使用 Win3
  • 比较在 Three.js 中创建天空盒材质的方法

    当谈到在 Three js 中制作天空盒时 我看到了两种不同的思想流派 假设我们有代码 var imagePrefix images mountains var directions xpos xneg ypos yneg zpos zne
  • 反应改变数组中的状态(for循环)

    我有一个有航班的州 并且有一个滑块可以更改最高价格以更改航班元素的可见性 maxpriceFilter var flightOffer this state flightOffer var sliderPrice this state sl
  • 如何在 C++ 中将加载到内存中的图像文件转换为 ID2D1Bitmap

    我正在尝试将刚刚从压缩文件提取到内存中的图像文件 png 但可以是任何东西 转换为 ID2D1Bitmap 以便使用 Direct 2D 进行绘制 我试图寻找一些文档 但我只能找到接收 const char path 或询问我图像的宽度和高
  • 解析 URI 参数和关键字值对

    我想解析文本文件中 URI L 的参数和关键字值 还应包括没有值的参数 Python 很好 但我愿意接受使用其他工具的建议 例如 Perl 或单行代码也可以解决这个问题 示例来源 www domain com folder page php
  • 使用 VB .Net 和 UI Automation 从 Google Chrome 中所有打开的选项卡获取 url

    您好 我有这段代码可以获取 Chrome 上的当前 url 但只能获取活动选项卡 url 我需要使用 UI 自动化从所有打开的选项卡获取 url 我的工作代码 Function GetChromeUrl ByVal proc As Proc
  • R 文本挖掘 - 处理复数

    我正在学习 R 中的文本挖掘 并且取得了相当大的成功 但我对如何处理复数感到困惑 即我希望 nation 和 nations 被算作同一个词 理想情况下 dictionary 和 dictionaries 被算作同一个词 x lt nati
  • 对多个后端服务的 Azure AD 用户进行身份验证

    我正在尝试找到一种授权 Web 客户端的策略 该客户端对 Azure 中托管的两项服务进行 HTTP 调用 Web 客户端都是客户端 两个 API 服务是托管在 Azure 中的 Azure Functions 对于上述三个应用程序中的每一
  • UIWindow 中的多个视图

    我有一个 基于导航的应用程序 它还需要始终在屏幕底部显示一个视图 添加 UINavigationController 的视图后 我将这个新视图添加到 UIWindow 中 In my delegate s applicationDidFin
  • 设置链接数据库 (MS Access) 路径而不访问链接数据库

    我的 Access 系统由两部分组成 一个包含表单 报告和宏的 前端 mdb 文件 以及一个包含数据的后端 mdb 文件 前端 MDB 文件的副本存储在每台计算机上 后端文件位于 server share backend mdb 前端MDB
  • 使用 Robospice 和 Android Studio 出现 Commons-Io 重复条目错误

    我已经研究以下问题几个小时了 但还没有想出解决我的问题的方法 我已经尝试了 Stack Overflow 上的以下修复 Android Studio 更新至 1 0 损坏 MultiDex and Gradle 插件 v0 13 1 后重复
  • 计算给定数字在排序集中的索引

    不确定这个问题应该在 Math Overflow 上还是在这里 所以首先在这里尝试 假设我们有一个包含 N 个 1 和 M 个 0 的数字 有 M N M N 个不同的这样的数字 可以在可数集合中排序 例如 包含 2 个 1 和 3 个 0
  • RootViewController动画过渡,初始方向错误

    所以我遵循了这个线程 RootViewController 切换过渡动画将 window rootViewController 从 A 转移到 B 再到 C 代码如下所示 UIView transitionWithView self win
  • 斯坦福计算器应用程序不断崩溃

    我正在斯坦福大学使用 Swift 在线学习斯坦福大学 iPad 和 iPhone 开发人员课程 并致力于创建一个计算器应用程序 对于编程还是有点陌生 但是 每当我从计算器中选择运算符时 它就会不断崩溃并显示错误消息 operandStack
  • IE 的 css 'pointer-events' 属性替代方案

    我有一个下拉导航菜单 其中某些标题在单击时不应导航到其他页面 这些标题在单击时打开下拉菜单 而其他标题则应导航 这些标题没有下拉菜单并直接导航 但是 两者类型有href给他们定义的 为了解决这个问题 我为前一种类型的标题添加了以下 css
  • Vue:不同页面之间共享数据

    var app new Vue el app data sharedData methods goToPageB function if some condition is met window location href pageB ht