Javascript 单击按钮时使用React导航到新页面
我想从欢迎页面导航到登录页面,我创建了两个页面,现在我想在单击登录按钮时导航到登录页面 以下是欢迎页面代码:Javascript 单击按钮时使用React导航到新页面,javascript,reactjs,react-router,react-router-dom,Javascript,Reactjs,React Router,React Router Dom,我想从欢迎页面导航到登录页面,我创建了两个页面,现在我想在单击登录按钮时导航到登录页面 以下是欢迎页面代码: import React from 'react'; import Button from '@material-ui/core/Button'; import Box from '@material-ui/core/Box' const useStyles = makeStyles({ logo: { width: '120px', heigh
import React from 'react';
import Button from '@material-ui/core/Button';
import Box from '@material-ui/core/Box'
const useStyles = makeStyles({
logo: {
width: '120px',
height: '120px',
},
loginButton: {
right: '50px',
}
});
export default function Welcome() {
const classes = useStyles()
return (
<div>
<Box style={{ width: '100%' }} display="flex" justifyContent="center" alignItems="center" >
<Box flexGrow={1}>
<img src={require('../logo.svg')} className={classes.logo} />
</Box>
<Box>
<Button variant="contained" color="primary" className={classes.loginButton}>
Login
</Button>
</Box>
</Box>
</div>
从“React”导入React;
从“@material ui/core/Button”导入按钮;
从“@material ui/core/Box”导入框
const useStyles=makeStyles({
标志:{
宽度:“120px”,
高度:'120px',
},
登录按钮:{
右:'50px',
}
});
导出默认函数Welcome(){
常量类=useStyles()
返回(
登录
下面是登录组件(尚未完成):
从“React”导入React;
从'@material ui/core/styles'导入{makeStyles};
从“@material ui/core/TextField”导入TextField;
const useStyles=makeStyles((主题)=>({
根目录:{
'& > *': {
边距:主题。间距(1),
宽度:'25ch',
},
},
}));
导出默认函数登录(){
const classes=useStyles();
返回(
)
}
PS:我正在使用react material ui library您做得很好,而且您已经编写了
欢迎
和登录
,react功能组件
非常好
要以编程方式导航到另一个页面,您必须使用React Router DOM
提供的history
对象。
并创建一个可以使用任何按钮onClick
方法执行的函数
import { useHistory } from 'react-router-dom';
export default function Login() {
const classes = useStyles();
const loginHandler(){
// handle your login logic
history.push('/help'); // use either relative or absolute path both will work,navigate to help page or wherever want to navigate
};
return (
<div>
<TextField id="email" label="Enter email" />
<TextField id="password" label="Enter password" />
<button onClick={loginHandler}>Login</button>
</div>
);
}
从'react router dom'导入{useHistory};
导出默认函数登录(){
const classes=useStyles();
常量loginHandler(){
//处理您的登录逻辑
history.push('/help');//使用相对路径或绝对路径两者都可以,导航到帮助页面或任何想要导航的地方
};
返回(
登录
);
}
您做得很好,而且您已经编写了欢迎
和登录
,对功能组件的反应非常好
要以编程方式导航到另一个页面,您必须使用React Router DOM
提供的history
对象。
并创建一个可以使用任何按钮onClick
方法执行的函数
import { useHistory } from 'react-router-dom';
export default function Login() {
const classes = useStyles();
const loginHandler(){
// handle your login logic
history.push('/help'); // use either relative or absolute path both will work,navigate to help page or wherever want to navigate
};
return (
<div>
<TextField id="email" label="Enter email" />
<TextField id="password" label="Enter password" />
<button onClick={loginHandler}>Login</button>
</div>
);
}
从'react router dom'导入{useHistory};
导出默认函数登录(){
const classes=useStyles();
常量loginHandler(){
//处理您的登录逻辑
history.push('/help');//使用相对路径或绝对路径两者都可以,导航到帮助页面或任何想要导航的地方
};
返回(
登录
);
}
您的评论回复非常接近:
登录
我的工作方式是用一个包含我的路由器的常量创建一个路由器文件。它如下所示:
Router.js
import React from "react";
import { Route } from "react-router-dom";
import Login from " *wherever your login is* ";
import Welcome from " *wherever your welcome is* ";
const Router = () => (
<div>
<Route exact path="/" component={Welcome} />
<Route exact path="/login" component={Login} />
</div>
);
export default Router;
import Router from " *where you put your router file* ";
class App extends Component {
render() {
return (
<div>
<Router>
<Router />
</Router>
</div>
);
}
}
export default App;
import React from 'react';
import Button from '@material-ui/core/Button';
import Box from '@material-ui/core/Box';
import { Link } from "react-router-dom";
//^this import is important
...
<Button component={Link} to='/login' variant="contained" color="primary" className={classes.loginButton}>
Login
</Button>
从“React”导入React;
从“react router dom”导入{Route};
从“*导入登录名,无论您的登录名在哪里*”;
从“*导入欢迎,无论您的欢迎在哪里*”;
常数路由器=()=>(
);
导出默认路由器;
然后,您将在您的App.js文件中创建路由器:
App.js
import React from "react";
import { Route } from "react-router-dom";
import Login from " *wherever your login is* ";
import Welcome from " *wherever your welcome is* ";
const Router = () => (
<div>
<Route exact path="/" component={Welcome} />
<Route exact path="/login" component={Login} />
</div>
);
export default Router;
import Router from " *where you put your router file* ";
class App extends Component {
render() {
return (
<div>
<Router>
<Router />
</Router>
</div>
);
}
}
export default App;
import React from 'react';
import Button from '@material-ui/core/Button';
import Box from '@material-ui/core/Box';
import { Link } from "react-router-dom";
//^this import is important
...
<Button component={Link} to='/login' variant="contained" color="primary" className={classes.loginButton}>
Login
</Button>
从“*放置路由器文件的地方*”导入路由器;
类应用程序扩展组件{
render(){
返回(
);
}
}
导出默认应用程序;
最后,您将使按钮成为路由器中指定url的链接:
Welcome.js
import React from "react";
import { Route } from "react-router-dom";
import Login from " *wherever your login is* ";
import Welcome from " *wherever your welcome is* ";
const Router = () => (
<div>
<Route exact path="/" component={Welcome} />
<Route exact path="/login" component={Login} />
</div>
);
export default Router;
import Router from " *where you put your router file* ";
class App extends Component {
render() {
return (
<div>
<Router>
<Router />
</Router>
</div>
);
}
}
export default App;
import React from 'react';
import Button from '@material-ui/core/Button';
import Box from '@material-ui/core/Box';
import { Link } from "react-router-dom";
//^this import is important
...
<Button component={Link} to='/login' variant="contained" color="primary" className={classes.loginButton}>
Login
</Button>
从“React”导入React;
从“@material ui/core/Button”导入按钮;
从“@material ui/core/Box”导入框;
从“react router dom”导入{Link};
//^这一点很重要
...
登录
这应该会让你发火。我对此也有点陌生,所以如果有东西坏了,请告诉我。你的评论回复非常接近:
登录
我的工作方式是用一个包含我的路由器的常量创建一个路由器文件。它如下所示:
Router.js
import React from "react";
import { Route } from "react-router-dom";
import Login from " *wherever your login is* ";
import Welcome from " *wherever your welcome is* ";
const Router = () => (
<div>
<Route exact path="/" component={Welcome} />
<Route exact path="/login" component={Login} />
</div>
);
export default Router;
import Router from " *where you put your router file* ";
class App extends Component {
render() {
return (
<div>
<Router>
<Router />
</Router>
</div>
);
}
}
export default App;
import React from 'react';
import Button from '@material-ui/core/Button';
import Box from '@material-ui/core/Box';
import { Link } from "react-router-dom";
//^this import is important
...
<Button component={Link} to='/login' variant="contained" color="primary" className={classes.loginButton}>
Login
</Button>
从“React”导入React;
从“react router dom”导入{Route};
从“*导入登录名,无论您的登录名在哪里*”;
从“*导入欢迎,无论您的欢迎在哪里*”;
常数路由器=()=>(
);
导出默认路由器;
然后,您将在您的App.js文件中创建路由器:
App.js
import React from "react";
import { Route } from "react-router-dom";
import Login from " *wherever your login is* ";
import Welcome from " *wherever your welcome is* ";
const Router = () => (
<div>
<Route exact path="/" component={Welcome} />
<Route exact path="/login" component={Login} />
</div>
);
export default Router;
import Router from " *where you put your router file* ";
class App extends Component {
render() {
return (
<div>
<Router>
<Router />
</Router>
</div>
);
}
}
export default App;
import React from 'react';
import Button from '@material-ui/core/Button';
import Box from '@material-ui/core/Box';
import { Link } from "react-router-dom";
//^this import is important
...
<Button component={Link} to='/login' variant="contained" color="primary" className={classes.loginButton}>
Login
</Button>
从“*放置路由器文件的地方*”导入路由器;
类应用程序扩展组件{
render(){
返回(
);
}
}
导出默认应用程序;
最后,您将使按钮成为路由器中指定url的链接:
Welcome.js
import React from "react";
import { Route } from "react-router-dom";
import Login from " *wherever your login is* ";
import Welcome from " *wherever your welcome is* ";
const Router = () => (
<div>
<Route exact path="/" component={Welcome} />
<Route exact path="/login" component={Login} />
</div>
);
export default Router;
import Router from " *where you put your router file* ";
class App extends Component {
render() {
return (
<div>
<Router>
<Router />
</Router>
</div>
);
}
}
export default App;
import React from 'react';
import Button from '@material-ui/core/Button';
import Box from '@material-ui/core/Box';
import { Link } from "react-router-dom";
//^this import is important
...
<Button component={Link} to='/login' variant="contained" color="primary" className={classes.loginButton}>
Login
</Button>
从“React”导入React;
从“@material ui/core/Button”导入按钮;
从“@material ui/core/Box”导入框;
从“react router dom”导入{Link};
//^这一点很重要
...
登录
这应该会让你发火。我对此也有点陌生,所以告诉我是否有东西坏了。你面临的问题是什么?React路由器很容易使用,我想。在这种情况下,我如何移动到登录页面,你能建议解决方案吗?登录我尝试过,但没有工作您面临的问题是什么?我想React router很容易使用。在这种情况下,我如何移动到登录页面,您能建议解决方案吗?登录我尝试了这个,但没有工作问题不在登录组件中,尚未完成。我只想