适用于Angular Electron应用的Singleton Redux商店

时间:2019-03-30 00:25:24

标签: angular redux electron

因此,我有一个拥有Angular SPA的Electron应用程序。应用程序的状态使用ngrx Redux处理。

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

2 个答案:

答案 0 :(得分:1)

您可以使用ipc来实现。

原始窗口渲染JS

    import { ipcRenderer } from "electron";

    let personName = 'Leandro'
    let personAge = -1

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

Main / 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})
    })

OR

在“ // On creation / indexjs”上将mainRenderer作为中间人。

我希望我有所帮助,我从未使用过角钢,但我认为您可以使用电子来实现这一目标。

有关更多信息,请访问电子:ipc Docs

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

答案 1 :(得分:0)

您可以使用此库elctron-ngrx