执行IF条件时如何重定向到ReactJS中的另一个页面?

Posted

技术标签:

【中文标题】执行IF条件时如何重定向到ReactJS中的另一个页面?【英文标题】:How to Redirect to another page in ReactJS when a IF condition is executed? 【发布时间】:2018-10-24 01:23:51 【问题描述】:

如果用户名和密码匹配,我想重定向到 Dashboard.jsx。怎么做 ?我是 ReactJS 的新手。

在 If 条件中,我想添加重定向代码来重定向另一个页面。 请回复。在 *** 中,最大值是在没有 if 条件的情况下使用的,所以这就是区别。

var users=
name:'bddebashis',
password:'debashis111249'


class Home extends Component 


constructor() 
    super();
    this.handleSubmit = this.handleSubmit.bind(this);



 handleSubmit(event) 
    event.preventDefault();
    const data = new FormData(event.target);

    fetch('/api/form-submit-url', 
        method: 'POST',
        body: data,
    );

    if(data.get('usr')==users.name && data.get('paswd')==users.password)
      <Redirect to='./Dashboard';/>

    
  

【问题讨论】:

remove the dot from redirect ,应该是 to='/Dashboard' ,你的问题已经在这里回答了:***.com/questions/43230194/… How to use Redirect in the new react-router-dom of Reactjs的可能重复 【参考方案1】:
// Are You using BrowserRouter means you can use like this

import PropTypes from 'prop-types';

var users=
    name:'bddebashis',
    password:'debashis111249'
    

    class Home extends Component 


    constructor() 
        super();
        this.handleSubmit = this.handleSubmit.bind(this);
    

    static contextTypes = 
        router: PropTypes.object,
      

     handleSubmit(event) 
        event.preventDefault();
        const data = new FormData(event.target);

        fetch('/api/form-submit-url', 
            method: 'POST',
            body: data,
        );

        if(data.get('usr')==users.name && data.get('paswd')==users.password)
          this.context.router.history.push("/Dashboard")  
        
      
    

【讨论】:

非常感谢您,您节省了我的时间。【参考方案2】:

如果你使用 React Router,你可以使用 Redirect 组件

https://github.com/ReactTraining/react-router/blob/master/packages/react-router/docs/api/Redirect.md

 <Redirect to="/dashboard" />

在渲染函数中添加重定向组件就足够了。

【讨论】:

【参考方案3】:
import createHistory from 'history/createBrowserHistory';
export const history = createHistory();

<Router history=history>
   <Route />

   <Router>

在您的仪表板组件中 仪表板中的导入历史记录 使用此行重定向

history.push('/Dashboard');

【讨论】:

【参考方案4】:

使用history 模块使重定向变得更容易。安装历史模块npm install history,然后像这样配置您的添加路由器。AppRouter.js

import  Router, Route, Switch  from 'react-router-dom';
import createHistory from 'history/createBrowserHistory';
export const history = createHistory();

<Router history=history>
   <Route path="/about" component=AboutPage />
   <Route ... />
   ...
<Router>

然后重定向到另一个component.like

import history from './AppRouter';

history.push('/dashboard');

【讨论】:

以上是关于执行IF条件时如何重定向到ReactJS中的另一个页面?的主要内容,如果未能解决你的问题,请参考以下文章

输出消息后如何使用标头重定向到php中的另一个页面?

重定向到 React 中的另一条路线时如何传递状态/道具?

如何从 ReactJS 中的外部函数重定向到路由

如何重定向到同一控制器中的另一个动作?

如何重定向到codeigniter中的另一个函数?

reactjs - 如何隐藏一个div并将其替换为reactjs中的另一个div?