首页
Javascript
Html
Css
Node.js

Electron

移动开发
小程序
工具类
服务端
浏览器相关
前端收藏
其他
关于
公司注册

electron通过reactjs自定义最大化、最小化、关闭功能

2019年01月09日 发布 阅读(4829) 作者:Jerman

修改组件

如这里是Header组件

  1. // @flow
  2. import React, { Component } from 'react';
  3. import style from './Header.css';
  4. const { ipcRenderer } = require('electron');
  5. export default class Home extends Component {
  6. // 最小化、最大化、关闭窗口
  7. buttonClick = type => {
  8. ipcRenderer.send(type);
  9. };
  10. render() {
  11. return (
  12. <div className={style['header-main']}>
  13. <div className={style['header-title']}>我是前端</div>
  14. <div className={style['header-right']}>
  15. <a
  16. href="javacript:;"
  17. rel="最小化"
  18. className={style['header-min']}
  19. onClick={this.buttonClick.bind(this,'min')}
  20. >
  21. 最小化
  22. </a>
  23. <a
  24. href="javacript:;"
  25. rel="最大化"
  26. className={style['header-max']}
  27. onClick={e => this.buttonClick('max', e)}
  28. >
  29. 最大化
  30. </a>
  31. <a
  32. href="javacript:;"
  33. rel="关闭"
  34. className={style['header-close']}
  35. onClick={this.buttonClick.bind(this,'close')}
  36. >
  37. 关闭
  38. </a>
  39. </div>
  40. </div>
  41. );
  42. }
  43. }

修改主进程文件,即main.jsindex.js

主进进程文件是有创建mainWindow = new BrowserWindow()
加入以下代码

1.这里注意下,frame: false状态下,仅一个isMaximized()并不能准确判断窗口是否已经最大化,所以加上判断是否全屏isFullScreen()
2.如果mainWindowtransparent属性设置了true,窗口是不允许变化的

  1. import { ipcMain } from 'electron';
  2. /**
  3. * 监听最大化、最小化、关闭操作
  4. */
  5. ipcMain.on('min', e => mainWindow.minimize());
  6. ipcMain.on('max', e => {
  7. if (mainWindow.isMaximized() || mainWindow.isFullScreen()) {
  8. mainWindow.unmaximize();
  9. } else {
  10. mainWindow.maximize();
  11. }
  12. });
  13. ipcMain.on('close', e => mainWindow.close());

参考

https://segmentfault.com/a/1190000011765025 (vue的方式)
https://electronjs.org/docs/api/browser-window
https://electronjs.org/docs/api/ipc-renderer

版权声明:本站文章除特别声明外,均采用署名-非商业性使用-禁止演绎 4.0 国际 许可协议,如需转载,请注明出处