Как отправить данные из одного окна Electron в другое с помощью ipcRenderer, используя vuejs?

У меня есть в одном компоненте это:

openNewWindow() {
    let child = new BrowserWindow({

        modal: true,
        show: false, 

    });
    child.loadURL('http://localhost:9080/#/call/' + this.chatEntityId + '?devices=' + JSON.stringify(data));
    child.on('close', function () { child = null; });

    child.once('ready-to-show', () => {
        child.show();
    });

    child.webContents.on('did-finish-load', () => {
        console.log("done loading");
        ipcRenderer.send('chanel',  "data");
    });
}

А затем в дочернем окне компонента:

mounted() {
    ipc.on('chanel', (event, message) => {
       console.log(message);
       console.log(event);
    });
}

Я пробовал это .on в created() а также beforeCreate() и с this.$nextTick(), withsetTimeout` но ничего не работает.

Я не хочу отправлять некоторые строковые данные, но объект, но, как вы можете видеть, не простая строка события "data" работает. У меня нет идей.

Я вижу, что это работает только в родительском компоненте для компонента, откуда произошел этот выброс, если я сделаю это:

  1. Отправить
  2. слушать в основном процессе
  3. отправить обратно event.sender

Итак, вопрос в том, как передать любую форму данных из одного окна в другое?

1 ответ

Хорошо, после долгой ночи, утро после решения.

  1. В некоторых компонентах vuejs некоторые действия при нажатии кнопки, например

ipcRenderer.send('chanel', someData);

  1. В основном процессе

    ipcMain.on('chanel', (event, arg) => {
       let child = new BrowserWindow()
       // other stuff here
       child.loadURL(arg.url)
       child.on('show', () => {
            console.log("done loading");
            child.webContents.send('data',  arg);
       });
    })
    
  2. В vuejs компонент для другого маршрута arg.url

    mounted() {
        ipc.on('chanel', (event, message) => {
           console.log(message);
           console.log(event);
        });
    }
    
Другие вопросы по тегам