【发布时间】:2018-12-02 13:02:43
【问题描述】:
我正在寻找如何在两个单独的组件(不是父组件和子组件)之间秘密传递数据,而无需在我的 Vue2 应用程序中使用 URL 参数。这并不意味着我在传递秘密,而是我只是不希望用户看到它(仅出于 UI 考虑)。
我知道 Vue 有 Props 但它们是用来在父子组件之间传递数据的。 就我而言,我的 URL 会改变,但我不想通过可见参数传递数据。
有人声称使用没有 URL 参数 here 的道具,但我无法重现有效的解决方案(每次都未定义)。
我还检查了these 选项,但它们都使用我们知道可见的 URL 或查询参数。
一个丑陋的解决方案是将数据写入本地存储,然后在那里读取,但这会产生很多开销和复杂性(例如,如果我只希望这些数据被读取一次,等等)。
这个问题有更优雅的解决方案吗?
谢谢!
【问题讨论】:
-
vuex 存储会和本地存储有同样的复杂性问题。 vuex 生命周期也取决于页面刷新。如果路由器重定向到另一个视图,这不构成刷新和重置前一个视图中设置的任何内容吗?
-
JavaScript 路由器在更改路由时不应刷新页面,只需更新 url 和 state。我认为明智的做法是进行 api 调用并坚持在您的后端。它已经成为一件很正常的事情,并且没有 cookie 或会话那么尴尬(至少在大多数情况下)。
-
@ippi 谢谢。我将尝试使用 vuex 的开销。至于对后端进行 API 调用,我不确定你在这里的确切含义,但在这个用例中,对服务器进行单独的 API 调用是行不通的,它也会让脑部手术头痛:)
-
好的!但是如果你的问题是在页面重新加载之间持久化数据,那么这不是 vuex 解决的问题(你仍然需要 localstorage 或其他一些存储来与 vuex 一起使用)。如果您的问题是让您的应用程序在路由更改时不刷新,那么这要么是网络服务器配置问题,要么是未正确设置 html5 历史模式(或未正确使用您的 url-hash)。
标签: javascript node.js vue.js vsprops