contextBridge.exposeInMainWorld 与 ipcRenderer.on 实现主进程操作文件夹后反馈文件夹路径给预加载文件,然后预加载文件把文件夹路径给渲染层
时间: 2024-01-21 08:18:11 浏览: 151
可以通过以下步骤实现主进程操作文件夹后反馈文件夹路径给预加载文件,然后预加载文件把文件夹路径给渲染层:
1. 在主进程中,使用 `dialog.showOpenDialog` 方法打开文件夹选择对话框,选择完成后获取所选文件夹的路径。
```
const { dialog } = require('electron')
dialog.showOpenDialog({ properties: ['openDirectory'] }).then(result => {
console.log(result.filePaths[0])
// 通过 contextBridge 将文件夹路径传递到预加载文件
})
```
2. 使用 `contextBridge.exposeInMainWorld` 将获取到的文件夹路径传递给预加载文件。
```
const { contextBridge } = require('electron')
contextBridge.exposeInMainWorld('api', {
selectFolder: async () => {
const { filePaths } = await dialog.showOpenDialog({ properties: ['openDirectory'] })
return filePaths[0]
}
})
```
3. 在预加载文件中,使用 `window.api.selectFolder()` 方法获取文件夹路径,并将其传递给渲染层。
```
window.api.selectFolder().then(path => {
console.log(path)
// 将文件夹路径传递给渲染层
})
```
4. 在渲染层中,通过 `window.electron` 对象获取到预加载文件暴露的 API,并使用其方法获取文件夹路径。
```
const electron = window.require('electron')
const { selectFolder } = electron.remote.getGlobal('api')
selectFolder().then(path => {
console.log(path)
// 使用获取到的文件夹路径进行操作
})
```
阅读全文