Skip to content

useIpcRenderer

Category
Export Size
482 B
Package
@vueuse/electron
Last Changed
6 months ago

Provides ipcRenderer and all of its APIs. Available in the @vueuse/electron add-on.

Usage

ts
import { 
useIpcRenderer
} from '@vueuse/electron'
import {
computed
} from 'vue'
// enable nodeIntegration if you don't provide ipcRenderer explicitly // see: https://www.electronjs.org/docs/api/webview-tag#nodeintegration const
ipcRenderer
=
useIpcRenderer
()
// Ref result will return const
result
=
ipcRenderer
.
invoke
<string>('custom-channel', 'some data')
const
msg
=
computed
(() =>
result
.
value
?.msg)
// remove listener automatically on unmounted
ipcRenderer
.
on
('custom-event', (
event
, ...
args
) => {
console
.
log
(
args
)
})
js
import { useIpcRenderer } from '@vueuse/electron'
import { computed } from 'vue'
// enable nodeIntegration if you don't provide ipcRenderer explicitly
// see: https://www.electronjs.org/docs/api/webview-tag#nodeintegration
const ipcRenderer = useIpcRenderer()
// Ref result will return
const result = ipcRenderer.invoke('custom-channel', 'some data')
const msg = computed(() => result.value?.msg)
// remove listener automatically on unmounted
ipcRenderer.on('custom-event', (event, ...args) => {
  console.log(args)
})

Type Declarations

Show Type Declarations
ts
/**
 * Result from useIpcRenderer
 *
 * @see https://www.electronjs.org/docs/api/ipc-renderer
 */
export interface UseIpcRendererReturn {
  /**
   * Listens to channel, when a new message arrives listener would be called with listener(event, args...).
   * [ipcRenderer.removeListener](https://www.electronjs.org/docs/api/ipc-renderer#ipcrendererremovelistenerchannel-listener) automatically on unmounted.
   *
   * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrendereronchannel-listener
   */
  
on
: (
channel
: string,
listener
:
IpcRendererListener
) =>
IpcRenderer
/** * Adds a one time listener function for the event. This listener is invoked only the next time a message is sent to channel, after which it is removed. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrendereroncechannel-listener */
once
: (
channel
: string,
listener
: (
event
:
IpcRendererEvent
, ...
args
: any[]) => void,
) =>
IpcRenderer
/** * Removes the specified listener from the listener array for the specified channel. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrendererremovelistenerchannel-listener */
removeListener
: (
channel
: string,
listener
: (...
args
: any[]) => void,
) =>
IpcRenderer
/** * Removes all listeners, or those of the specified channel. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrendererremovealllistenerschannel */
removeAllListeners
: (
channel
: string) =>
IpcRenderer
/** * Send an asynchronous message to the main process via channel, along with arguments. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrenderersendchannel-args */
send
: (
channel
: string, ...
args
: any[]) => void
/** * Returns Promise<any> - Resolves with the response from the main process. * Send a message to the main process via channel and expect a result ~~asynchronously~~. * As composition-api, it makes asynchronous operations look like synchronous. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrendererinvokechannel-args */
invoke
: <
T
>(
channel
: string, ...
args
: any[]) =>
ShallowRef
<
T
| null>
/** * Returns any - The value sent back by the ipcMain handler. * Send a message to the main process via channel and expect a result synchronously. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrenderersendsyncchannel-args */
sendSync
: <
T
>(
channel
: string, ...
args
: any[]) =>
ShallowRef
<
T
| null>
/** * Send a message to the main process, optionally transferring ownership of zero or more MessagePort objects. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrendererpostmessagechannel-message-transfer */
postMessage
: (
channel
: string,
message
: any,
transfer
?: MessagePort[]) => void
/** * Sends a message to a window with webContentsId via channel. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrenderersendtowebcontentsid-channel-args */
sendTo
: (
webContentsId
: number,
channel
: string, ...
args
: any[]) => void
/** * Like ipcRenderer.send but the event will be sent to the <webview> element in the host page instead of the main process. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrenderersendtohostchannel-args */
sendToHost
: (
channel
: string, ...
args
: any[]) => void
} /** * Get the `ipcRenderer` module with all APIs. * * @see https://www.electronjs.org/docs/api/ipc-renderer#ipcrenderersendtohostchannel-args * @see https://vueuse.org/useIpcRenderer */ export declare function
useIpcRenderer
(
ipcRenderer
?:
IpcRenderer
,
): UseIpcRendererReturn

Source

SourceDocs

Contributors

Anthony Fu
IlyaL
SerKo
Anthony Fu
Curt Grimes
ArcherGu

Changelog

v12.0.0-beta.1 on
0a9ed - feat!: drop Vue 2 support, optimize bundles and clean up (#4349)
v10.8.0 on
a086e - fix: stricter types
v10.7.1 on
dd820 - fix: set explicit return type

Released under the MIT License.

Build faster with AI
New Masterclass to help you leverage AI in your Vue workflow
Get Early Access