如何在 Electron + React App 中创建路由
How to create route in Electron + React App
大家好 Js 脚本家族,
目前我正在基础级别的 Electron + React js 项目上工作,我已经成功创建了项目,但现在我需要继续进行路由过程。但我坚持下去并收到如下错误
> (node:12411) electron: Failed to load URL:
> file:///opt/lampp/htdocs/electron/employee-management/addemployee with
> error: ERR_FILE_NOT_FOUND (Use `electron --trace-warnings ...` to show
> where the warning was created)
我按照下面的方法进行路由
-> install react router
npm install --save react-router-dom
在 index.js 文件中导入反应路由器 dom
import {HashRouter as Router, Route, Switch} from 'react-router-dom';
我的index.js文件
import React from 'react';
import ReactDom from 'react-dom';
import {HashRouter as Router, Route, Switch} from 'react-router-dom';
import {Home} from './components/Home';
import { AddEmployee } from './components/AddEmployee';
import '../public/css/style.css';
ReactDom.render(
<Router>
<Switch>
<Route path="/" component={ Home }>
<Home />
</Route>
<Route exact={true} path="/addemployee" component={ AddEmployee }>
<AddEmployee />
</Route>
</Switch>
</Router>,
document.getElementById('root')
);
和我添加 href nav 的头文件
import React from 'react';
import { Container, Button, Navbar, Nav, NavItem, NavDropdown, MenuItem, Form, FormControl } from 'react-bootstrap';
export const Header = () => {
return (
<>
<Navbar bg="dark" variant="dark">
<div className="container-fluid">
<Navbar.Brand href="">Employee Management</Navbar.Brand>
<Nav className="me-auto">
<Nav.Link href="./addemployee">Add Employee</Nav.Link>
</Nav>
<Form className="d-flex">
<FormControl
type="search"
placeholder="Search"
className="mr-2"
aria-label="Search"
/>
<Button className="ml-3" variant="outline-secondary">Search</Button>
</Form>
</div>
</Navbar>
</>
)
}
希望你们理解我的问题。
还有一件事是我独立创建了这个单一目录项目。首先创建电子项目并在安装后反应并使用反应组件渲染文件。
提前致谢
据我从参数名称可以看出,您正在通过 href
进行路由。但是,您使用的是 HashRouter
。您应该改为将哈希推送到历史记录。
使用 Router Link 而不是 React Bootstrap 中的 link,我相信您也可以将其作为组件提供给 bootstrap 组件。
或:
const history = useHistory();
//...
history.push("/addemployee"); //in the onClick handler
大家好 Js 脚本家族,
目前我正在基础级别的 Electron + React js 项目上工作,我已经成功创建了项目,但现在我需要继续进行路由过程。但我坚持下去并收到如下错误
> (node:12411) electron: Failed to load URL:
> file:///opt/lampp/htdocs/electron/employee-management/addemployee with
> error: ERR_FILE_NOT_FOUND (Use `electron --trace-warnings ...` to show
> where the warning was created)
我按照下面的方法进行路由
-> install react router
npm install --save react-router-dom
在 index.js 文件中导入反应路由器 dom
import {HashRouter as Router, Route, Switch} from 'react-router-dom';
我的index.js文件
import React from 'react';
import ReactDom from 'react-dom';
import {HashRouter as Router, Route, Switch} from 'react-router-dom';
import {Home} from './components/Home';
import { AddEmployee } from './components/AddEmployee';
import '../public/css/style.css';
ReactDom.render(
<Router>
<Switch>
<Route path="/" component={ Home }>
<Home />
</Route>
<Route exact={true} path="/addemployee" component={ AddEmployee }>
<AddEmployee />
</Route>
</Switch>
</Router>,
document.getElementById('root')
);
和我添加 href nav 的头文件
import React from 'react';
import { Container, Button, Navbar, Nav, NavItem, NavDropdown, MenuItem, Form, FormControl } from 'react-bootstrap';
export const Header = () => {
return (
<>
<Navbar bg="dark" variant="dark">
<div className="container-fluid">
<Navbar.Brand href="">Employee Management</Navbar.Brand>
<Nav className="me-auto">
<Nav.Link href="./addemployee">Add Employee</Nav.Link>
</Nav>
<Form className="d-flex">
<FormControl
type="search"
placeholder="Search"
className="mr-2"
aria-label="Search"
/>
<Button className="ml-3" variant="outline-secondary">Search</Button>
</Form>
</div>
</Navbar>
</>
)
}
希望你们理解我的问题。
还有一件事是我独立创建了这个单一目录项目。首先创建电子项目并在安装后反应并使用反应组件渲染文件。
提前致谢
据我从参数名称可以看出,您正在通过 href
进行路由。但是,您使用的是 HashRouter
。您应该改为将哈希推送到历史记录。
使用 Router Link 而不是 React Bootstrap 中的 link,我相信您也可以将其作为组件提供给 bootstrap 组件。
或:
const history = useHistory();
//...
history.push("/addemployee"); //in the onClick handler