首页 > 解决方案 > Angular Electron 应用的单例 redux 商店

问题描述

所以我有一个持有 Angular SPA 的电子应用程序。应用程序的状态是使用 ngrx Redux 处理的。

我希望能够创建一个新BrowserWindow窗口并保持原始窗口中的状态。我已经看到使用 React 可以做到这一点,redux-electron-store但我似乎找不到任何与 Angular 类似的东西。Angular可以做到这一点吗?

标签: angularreduxelectron

解决方案


您可以通过使用 ipc 来实现这一点。

原始窗口渲染JS

    import { ipcRenderer } from "electron";

    let personName = 'Leandro'
    let personAge = -1

    ipcRenderer.send("send-data", {name:personName, age:personAge})

主/index.js

    // When receives data from ipcRenderer/Original renderer 
    // emits that data to channel "here is your data"
    ipcMain.on("send-data", function(event, args){
        ipcMain.emit("here-isyour-data", data) 
    })

接收器渲染器

    let personName = null
    let personAge = null
    ipcRenderer.on("here-isyour-data",function(event, args) {
       personName = args.personName
       personAge = args.personAge
    })

最好将主 index.js 设置为控制器,但如果您愿意,可以使用ipcRenderer.sendTo().

要解决您的问题,您可以这样做

// On creation/indexjs
let newWindow = new BrowserWindow()
 newWindow.emit('hey, im created')

 // On render.js
 let personName = null
 let personAge = null
 newWindow.once('oke, here is your data', function(event, args){
       personName = args.personName
       personAge = args.personAge
})

// On original render.js

    let personName = 'Leandro'
    let personAge = -1
    ipcRenderer.once("hey, im created", function(){
       ipcRenderer.send("oke, here is your data", {name:personName, age:personAge})
    })

或者

让 mainRenderer 作为“// On creation/indexjs”的中间人。

我希望我有所帮助,我从未使用过角度,但我认为你可以使用电子来实现这一点。

欲了解更多信息,请访问电子:ipc Docs

如果您想要一个很酷且改进的窗口处理程序,请访问:GitHub


推荐阅读