Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮时使用React导航到新页面_Javascript_Reactjs_React Router_React Router Dom - Fatal编程技术网

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很容易使用。在这种情况下,我如何移动到登录页面,您能建议解决方案吗?登录我尝试了这个,但没有工作问题不在登录组件中,尚未完成。我只想