Я довольно новичок в разработке электронов и адаптировал код из этого потока , чтобы иметь доступ к методам ip c в рендере, для которого nodeIntegration установлен в false . Кажется, все работает, я просто хотел спросить, есть ли у кого-нибудь еще примеры использования / ограничения для этой техники, прежде чем я go сойдет с рельсов и просто вставлю туда каждый модуль.
Вот моя версия кода из вышеупомянутого потока, на этот раз с модулем Electron-Promise-IP c:
предзагрузка. js
const { contextBridge, ipcRenderer } = require("electron");
const promiseIpc = require('electron-promise-ipc');
contextBridge.exposeInMainWorld(
"api", {
send: (channel, data) => {
// whitelist channels
let validChannels = [
"toMain",
"/get/comp",
"/post/comp"
];
if (validChannels.includes(channel)) {
ipcRenderer.send(channel, data);
}
},
promise: (channel, data, func) => {
let validChannels = [
"toMain",
"/get/comp",
"/post/comp",
"test"
];
if (validChannels.includes(channel)) {
promiseIpc.send(channel, data).then((res) => {func(res)});
}
},
receive: (channel, func) => {
let validChannels = [
"fromMain",
"/get/comp"
];
if (validChannels.includes(channel)) {
ipcRenderer.on(channel, (event, ...args) => func(...args));
}
},
}
);
рендер / приложение. js (приложение React)
getComps = () => {
window.api.promise('/get/comp', { message: "Querying Compendiums..." }, (res) => {
this.setState({ comps: res });
});
}
createComp = (form) => {
window.api.promise('/post/comp', form, (res) => {
this.setState({ comps: res });
});
}