Pulled ALL skills from 15 source repositories: - anthropics/skills: 16 (docs, design, MCP, testing) - obra/superpowers: 14 (TDD, debugging, agents, planning) - coreyhaines31/marketingskills: 25 (marketing, CRO, SEO, growth) - better-auth/skills: 5 (auth patterns) - vercel-labs/agent-skills: 5 (React, design, Vercel) - antfu/skills: 16 (Vue, Vite, Vitest, pnpm, Turborepo) - Plus 13 individual skills from various repos Mosaic Stack is not limited to coding — the Orchestrator and subagents serve coding, business, design, marketing, writing, logistics, analysis, and more. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
119 lines
4.3 KiB
Markdown
119 lines
4.3 KiB
Markdown
---
|
|
category: '@Electron'
|
|
---
|
|
|
|
# useIpcRenderer
|
|
|
|
Provides [ipcRenderer](https://www.electronjs.org/docs/api/ipc-renderer) and all of its APIs.
|
|
|
|
## 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)
|
|
})
|
|
```
|
|
|
|
## 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
|
|
```
|