【问题标题】:Share array of objects between two pages在两个页面之间共享对象数组
【发布时间】:2019-06-07 19:29:46
【问题描述】:

我在一个页面上有一个对象数组,我想在电子的另一个页面上拥有这些对象。两个页面都有自己的 javascript 文件,并且有一个 function.js 文件。

file1.js

const { createArray, getArray } = require ('./function')

window.onload = () => {
    createArray()
    sessionStorage.setItem("Array", getArray)
    console.log(sessionStorage.getItem("Array")   //[object Object],[object Object],[object Object]
    console.log(getArray) // [{"1": 10}, {"2": 11}, {"3": 12}]
}

Electron 的 documentation 将变量从一页转移到另一页最好通过 HTML 5 API 完成。

但我无法在 sessionStorage 中存储对象数组。根据这个post,这是完全正常的。这里使用的解决方案是字符串化。但这是一个相当昂贵的过程,我想避免。

有人知道如何最好地在两个页面之间共享对象数组吗?

【问题讨论】:

  • 我不认为其他解决方案会“更便宜”,除非我们在这里谈论的是巨大的阵列。在这种情况下,可能会首选服务器端数据库。数组中只有 3 个对象,我会选择 localStorage 或您的文档链接中提到的 IPC 系统。

标签: javascript html electron


【解决方案1】:

我会将数组保存在您的后台脚本中,并使用消息传递 API 将其提供给 BrowserWindows:Link

【讨论】:

    【解决方案2】:

    我认为你可以通过简单地从另一个页面重新使用getArray来解决这个问题,所以只需重新导入它。

    const { createArray, getArray } = require ('./function')

    否则你需要使用JSON.stringifyJSON.parse使用sessionStorage,例如:

    sessionStorage.setItem("Array", JSON.stringify(getArray));
    const data = JSON.parse(sessionStorage.getItem("Array"))
    

    或者你可以使用IPC来设置全局的值。

    作为旁注: 为sessionStorage 使用更具描述性的名称而不是“数组”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2019-04-30
      • 2010-10-22
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多