Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包

1、dialog模块

1、dialog.showOpenDialog
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第1张图片Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第2张图片
2、弹出消息框
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第3张图片

2、path模块取文件名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Menu和MenuItem模块

原生应用菜单 和 上下文菜单
配合 html 的 contextmenu 事件(右键元素时显示的上下文事件)

设置上下文菜单案例:

Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第4张图片

设置原生菜单案例

1、先根据官方文档写好template模板

Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第5张图片
2、再在main.js入口文件中,使用它。
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第6张图片
3、结果
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第7张图片

menu.items还可以拿取菜单项

4、元素contains以及类名contains

Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第8张图片

使用node节点自带的api
在这里插入图片描述
注: contains传入的参数是string,且没有点号。
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第9张图片

5、data-*存储信息

Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第10张图片
在这里插入图片描述
在这里插入图片描述

7、hooks存在数据闭包

对比2个自定义hook

useKeyPress.js
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第11张图片
说明:
1、自身的setKeyPressed会随set变化,仅绑定按键事件,且无重渲必要,故置[]不触发useEffect。
2、每次setKeyPressed使被实例化数据依附的组件重新render,然后又走到这个hook。
3、最后重新return keyPressed给组件使用。

useContextMenu.js
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第12张图片
说明:
1、useRef也会实时响应node.current变化。此处有Menu菜单,菜单项具有回调函数onFileClick
Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包_第13张图片
2、回调函数存在闭包,其中使用到App.js中的state为第一次渲染,并不是即时的state。所以需要使useContextMenu实时能响应state数据的变化。
3、要么不加第二个参数(一旦set就重新绑定事件,重新生成闭包),或者指定需要重渲的参数。

你可能感兴趣的:(Electron学习之旅5,dialog模块,path模块取文件名,Menu模块,元素contains以及类名contains,data-*存储信息,hooks存在数据闭包)