如何在 React 中 link 两个单独的页面?
How to link two separate pages in React?
我在名为 components 的文件夹中有两个页面注册和登录,我正在尝试 link 注册页面和使用 <Link>
的登录页面。但是它给出了一些错误。
组件/SignUp.js
<div className = 'spacing'>Already have an account? <span className = 'highlight'><Link to = {'/SignIn'}>Sign In</Link></span></div>
组件/SignIn.js
import React, { Component } from 'react'
import './SignInStyleSheet.css'
class SignIn extends Component {
render() {
return (
<React.Fragment>
{/* for pop-up success */}
<div class = "pop-up-success">
<h3> Login Successful.</h3>
</div>
{/* for pop-up error */}
<div class = "pop-up-error">
<h3> Incorrect Username/ Password.</h3>
</div>
<div class = 'container'>
{/* for form box */}
<div class =' window'>
<div class = 'bold-line'></div>
<div class = 'overlay'></div>
<div class = 'content'>
<div class = 'welcome'>Welcome Again!</div>
<div class = 'subtitle'>Thank you to step forwaerd to save water.</div>
<form class = "input-fields">
<input type = 'email' placeholder = 'Email' class = 'input-line full-width' value = "" name = "useremail" id = "email" required></input>
<input type = 'text' placeholder = 'Street' class = 'input-line full-width' required></input>
<input type = 'text' placeholder = 'City' class = 'input-line full-width' required></input>
<select id = "select_opt" class = 'input-line full-width' required></select>
<input type = 'password' placeholder = 'Password' class = 'input-line full-width' value = "" name = "userpasswd" id = "password" required></input>
</form>
<div class = 'spacing'>Forgot Password? <span class = 'highlight'><a href = "#">Click Here</a></span></div>
<div><button id = 'loginBtn' class = 'ghost-round full-width' type = "button">Log In</button></div>
<div class = 'spacing'>New User? <span class = 'highlight'><a href = "sign-up.html">Sign Up</a></span></div>
</div>
</div>
</div>
</React.Fragment>
)
}
}
export default SignIn
错误:
Error: Invariant failed: You should not use <Link> outside a <Router>
管理 React 应用页面之间导航的最佳方式是使用 React 路由器 - 路由器管理应用中可用的路由(即链接到应用中页面的 URL)。
看看这里对 React Router 的介绍:
https://www.freecodecamp.org/news/react-router-in-5-minutes/
使用以下命令安装react-router-dom
npm install --save react-router-dom
在您的项目目录中创建一个新文件 (MainRouter)
import { BrowserRouter, Route, Link } from "react-router-dom"; //import the package
import SignIn from "../SignIn" //import your signIn page
import SignUp from "../SignUp" //import your signUp page
function MainRouter(){
return(
<BrowserRouter>
<div className="container">
<Switch>
<Route path="/signIn" component={SignIn} />
<Route path="/signUp" component={SignUP} />
</Switch>
</div>
</BrowserRouter>
)
}
export default MainRouter
为什么需要这个
react-router-dom 包允许您在浏览器(客户端)中动态导航页面而无需刷新页面,这是处理单页应用程序导航的好方法
我在名为 components 的文件夹中有两个页面注册和登录,我正在尝试 link 注册页面和使用 <Link>
的登录页面。但是它给出了一些错误。
组件/SignUp.js
<div className = 'spacing'>Already have an account? <span className = 'highlight'><Link to = {'/SignIn'}>Sign In</Link></span></div>
组件/SignIn.js
import React, { Component } from 'react'
import './SignInStyleSheet.css'
class SignIn extends Component {
render() {
return (
<React.Fragment>
{/* for pop-up success */}
<div class = "pop-up-success">
<h3> Login Successful.</h3>
</div>
{/* for pop-up error */}
<div class = "pop-up-error">
<h3> Incorrect Username/ Password.</h3>
</div>
<div class = 'container'>
{/* for form box */}
<div class =' window'>
<div class = 'bold-line'></div>
<div class = 'overlay'></div>
<div class = 'content'>
<div class = 'welcome'>Welcome Again!</div>
<div class = 'subtitle'>Thank you to step forwaerd to save water.</div>
<form class = "input-fields">
<input type = 'email' placeholder = 'Email' class = 'input-line full-width' value = "" name = "useremail" id = "email" required></input>
<input type = 'text' placeholder = 'Street' class = 'input-line full-width' required></input>
<input type = 'text' placeholder = 'City' class = 'input-line full-width' required></input>
<select id = "select_opt" class = 'input-line full-width' required></select>
<input type = 'password' placeholder = 'Password' class = 'input-line full-width' value = "" name = "userpasswd" id = "password" required></input>
</form>
<div class = 'spacing'>Forgot Password? <span class = 'highlight'><a href = "#">Click Here</a></span></div>
<div><button id = 'loginBtn' class = 'ghost-round full-width' type = "button">Log In</button></div>
<div class = 'spacing'>New User? <span class = 'highlight'><a href = "sign-up.html">Sign Up</a></span></div>
</div>
</div>
</div>
</React.Fragment>
)
}
}
export default SignIn
错误:
Error: Invariant failed: You should not use <Link> outside a <Router>
管理 React 应用页面之间导航的最佳方式是使用 React 路由器 - 路由器管理应用中可用的路由(即链接到应用中页面的 URL)。
看看这里对 React Router 的介绍: https://www.freecodecamp.org/news/react-router-in-5-minutes/
使用以下命令安装react-router-dom
npm install --save react-router-dom
在您的项目目录中创建一个新文件 (MainRouter)
import { BrowserRouter, Route, Link } from "react-router-dom"; //import the package
import SignIn from "../SignIn" //import your signIn page
import SignUp from "../SignUp" //import your signUp page
function MainRouter(){
return(
<BrowserRouter>
<div className="container">
<Switch>
<Route path="/signIn" component={SignIn} />
<Route path="/signUp" component={SignUP} />
</Switch>
</div>
</BrowserRouter>
)
}
export default MainRouter
为什么需要这个
react-router-dom 包允许您在浏览器(客户端)中动态导航页面而无需刷新页面,这是处理单页应用程序导航的好方法