参考:https://www.it1352.com/2061659.html
electronjs中引入 React,以及暴露js的文件,main.js
... function createWindow () { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, // 引入暴露文件 preload: path.join(__dirname, "preload.js") } }) // win.loadFile('src/index.html') win.loadURL('http://localhost:5000'); // 控制台 win.webContents.openDevTools() } ...
preload.js
// electronjs 目录下的 preload.js 最底下追加 // load Api 需要什么 api 就引入什么api const loadApi = [ 'electron', // 引入 electron 'fs', ]; loadApi.map((item) => { global[item] = require(item); });
React中调用 preload.js(无需引入文件,直接在window对象获取)文件中暴露的 api
import React,{Component} from 'react'; import { HashRouter as Router, Link, Route } from 'react-router-dom'; import './App.css'; import { Button } from 'element-react'; const Home = () => ( <div> <h2>Home</h2> </div> ) const About = () => ( <div> <h2>About</h2> </div> ) const Product = () => ( <div> <h2>Product</h2> </div> ) // const electron = window.electron class App extends Component { Test(){ } render(){ const { electron } = window.electron; // console.log(window.electron); return ( <Router> <div className="App"> <Link to="/">Home</Link> <Link to="/About">About</Link> <Link to="/Product">Product</Link> <hr/> <Route path="/" exact component={Home}></Route> <Route path="/about" component={About}></Route> <Route path="/product" component={Product}></Route> </div> </Router> ) } } export default App;