Tengo una aplicación vue3 con electron y necesito enviar una variable desde ipcRenderer a mi página Vue3. No puedo entender cómo hacerlo, especialmente dado que vue elimina muchos js. Lo que estoy tratando de hacer es guardar la ruta de una carpeta que hasta ahora funciona bien, luego mostrarla en la aplicación vue3 en un lapso o lo que sea. Obtuve con éxito el valor que necesito mostrar en ipcRenderer pero no puedo acceder a él usando mi aplicación vue.
página de Vue3
<q-btn id="showpath" dark flat size="xl" label="show Path" type="submit" @click="showpath" /> </div> export default { name: "Settings", props: {}, methods: { loader() { window.postMessage({ type: "select-dirs", }); }, showpath() { const testa = window.postMessage({ type: "pathtf"}) console.log("Vue page says :"+ testa) }, }, }; </script>Todo lo que obtengo aquí es "indefinido
Guión de precarga
const { ipcRenderer } = require('electron'); const settings = require('./settings'); process.once('loaded', () => { window.addEventListener('message', evt => { if (evt.data.type === 'select-dirs') { ipcRenderer.send('select-dirs') } }), window.addEventListener('message', evt => { if (evt.data.type === 'pathtf') { const pathtf = settings.gettfpath("pathtf") console.log(pathtf) } }) })Console.log en el archivo de precarga funciona y muestra el valor, pero no puedo obtener ese valor en mi página vue3.
¿Algún consejo? Gracias
Le sugiero que use contextBridge de electron para exponer ciertos métodos (enviar/recibir) al proceso de representación.
No sé qué hace su método gettfPath, pero si esa variable está disponible para usted en el archivo preloadjs, debería poder exponerla como una variable así:
const {contextBridge} = require("electron"); contextBridge.exposeInMainWorld("electronApi", { pathtf: settings.gettfPath() });Con esto, su ruta estará expuesta a su proceso de representación como window.electronApi.pathtf
Aquí hay dos recursos que pueden resultarle útiles: