在 React 中重定向 - 节点 [英] redirect in React - Node

查看:34
本文介绍了在 React 中重定向 - 节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我观看了某些教程以了解如何进行路由,但它们都是理论性的,或者我无法理解它们的实现.

I watched certain tutorial to understand how to do routing but they all were theoretical or I wasn't able to understand their implementation.

有人可以通过指导我路由/重定向这个组件作为示例来帮助我,以便我也可以为其他组件设置路由.

Can someone help me by guiding me to route/re-direct this one component as an example so that I can setup routes for other components as well.

我在服务器端使用 express.js 并为客户端做出反应

I am using express.js for the server side and react for client side

在我的反应中,我像这样使用 axious 向我的服务器发送了一个请求(这发生在有状态的注册容器中)

In my react, I sent a request using axious to my server like this (this happens in stateful signup container)

 axios.post('/user', {
        emailAddress: this.state.emailAddress,
            password: this.state.password
        })
      .then((response) => {
                if (!response.data.error) {
                    console.log('successful signup')
                } else {
                    console.log('username already taken')
                }
            })
        .catch(error => {
                console.log('signup error: ')
                console.log(error)
            })

在我的服务器路由中,我将这些数据存储在我的猫鼬中,然后想要重定向到我的登录页面(或任何页面).我的服务器路由看起来像这样

In my server route, I take this data, store in my mongoose and then want to redirect to my login page (or any page). My server route looks like this

router.post("/", function(req, res) {
  console.log("user login post request");
  console.log(req.body.emailAddress)
  User.findOne({username: req.body.emailAddress}, function(err, user){
      if (err) {
        console.log('post error: ', err)

        }
      else if (user) {
        console.log("already exsist")
        res.json({
            error: 'user exsist'
        })
      }
      else {
        console.log("here new user")
        User.register(new User({username: req.body.emailAddress }), req.body.password, function(error, user){
          if (error) {
            console.log("error -> Post request from user");
            console.log(error);
          } else {
            req.logIn(user, function (err) {
             if (err) {
               return next(err);
                   }
              return res.json(user) // send whatever you want or redirect
             });

          }
        })
      }
  })
})

在 ejs 中,我们曾经做 res.render 但那是 EJS,我不做反应所以有人可以帮助我/指导设置路由,以便如果用户成功注册,那么我们可以将他重定向到登录组件.

In ejs, we used to do res.render but then that is EJS and I doesn't work on react so can someone help me/guide in setting up routes so that if user is successfully registered then we can redirect him to login component.

我至少已经做过 npm install react-router-dom --save

The least I have already done is npm install react-router-dom --save

推荐答案

在 index.js 中导入 BrowserRouter

Import BrowserRouter in your index.js

import { BrowserRouter } from 'react-router-dom';

将您的 App 组件包装到 BrowserRouter

Wrap your App component to BrowserRouter

    <BrowserRouter>
        <App />
    </BrowserRouter>

在你的 App.js 中设置路由

Set up routes in your App.js

import { Route, Switch } from 'react-router-dom';
// import your components...

<Switch>
        // Example routes...
        <Route exact path='/' component={yourMainComponent} />
        <Route exact path='/login' component={yourLoginComponent} />
        ...
</Switch>

在你的 axios 函数中你可以重定向

In your axios function you can redirect

axios.post('/user', {
    emailAddress: this.state.emailAddress,
        password: this.state.password
    })
  .then((response) => {
            if (!response.data.error) {
                console.log('successful signup')
            } else {
                console.log('username already taken')
            }

            // Redirect
            this.props.history.replace('/path-to-redirect');
        })
    .catch(error => {
            console.log('signup error: ')
            console.log(error)
        })

其他方法是使用 react-router-dom 中的 Redirect 组件.

Other approach would be to use the Redirect component from react-router-dom.

这篇关于在 React 中重定向 - 节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆