登录“onSuccess”导航到另一个页面。反应

乔纳德

所以我希望能够在用户成功登录后转到主页面。我还是 React 的新手。如何才能做到这一点。我也在使用 v4 的 react。当我点击登录按钮时,它似乎触发了操作但没有完成它。

这是处理登录的操作:

const mainPage = (response, dispatch) => {
if(POST_DATA_SUCCESS) {
  this.props.history.push('/main');
}
dispatch({
    type: POST_DATA_SUCCESS,
    response,
});
};

export function loginUser(username1, password1) {
const promise = fetch('http://localhost:8080/users/login', {
method: 'POST',
headers: {
  'Accept': 'application/json',
  'Content-Type': 'application/json',
  'Authorization': 'Basic ' + btoa(username1 + ":" + password1),
},
body: JSON.stringify({
  username: username1,
  password: password1,
})
});
return {
    onRequest: POST_DATA_TRIGGERED,
    onSuccess: mainPage,
    onFailure: POST_DATA_FAILURE,
    promise,
};
}

这是处理登录请求的后端:

router.get('/login',
passport.authenticate('basic', {session: false}),
(req, res) => res.json({user: req.user.apiRepr()})
);

router.post('/login', function (req, res, next) {
passport.authenticate('basic', function (err, user, info) {
    if (err) {
        return console.log(err);
    }
    if (!user) {
        return res.status(401).json({
            message: 'Username/Password Incorrect'
        });
    }
    req.logIn(user, function (err) {
        if (err) {
            return console.log(err);
        }
        return res.status(200).json({
            user: user.username
        });
    });
})(req, res, next);
});

以及带有表单的登录组件:

import React from 'react';
import {BrowserRouter as Router, Route, Link} from 'react-router-dom';
import { loginUser } from '../actions';
import { connect } from 'react-redux';

export class Login extends React.Component {
 constructor(props) {
  super(props);
  this.state = {
  //username: '',
  //password: '',
 }
}

render() {
 return(
 <form>
   <h3>Login to start your Journey</h3>
   <input placeholder="username" ref={input => {this.username = input}}>
   </input>
  <input placeholder="password" type="password"ref={input => {this.password 
  = input}}></input>
  <button onClick={this.login.bind(this)}>Login</button>
 </form>
  )
}

login() {
 const userName = this.username.value;
 const passWord = this.password.value;
 console.log(userName);
 console.log(passWord);
 this.props.loginUser(userName, passWord);
 }
}

export default connect(null, { loginUser })(Login);
埃文塞巴斯蒂安

在您的 mainPage 动作创建者中,您使用this假设绑定到组件实例来引用道具不是。

   const mainPage = (response, dispatch) => {
     if(POST_DATA_SUCCESS) {
       this.props.history.push('/main'); // 'this' here does not refer to the React component instance
     }
     dispatch({
        type: POST_DATA_SUCCESS,
        response,
     });
   };

如果您使用的是react-routerv4,则可以使用react-router-redux, 和 import push,这是一个将由路由器减速器处理的动作创建者。您需要先按照此处的步骤设置您的 redux 存储

import { push } from 'react-router-redux'

const mainPage = (response, dispatch) => {
    if(POST_DATA_SUCCESS) {
      dispatch(push('/main'));
    }
    dispatch({
        type: POST_DATA_SUCCESS,
        response,
    });
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反应导航从一个页面到另一个页面不起作用

来自分类Dev

导航到另一个页面时,已登录的用户名消失

来自分类Dev

反应本机导航到另一个类

来自分类Dev

从ContinueFileOpenPicker方法导航到另一个页面

来自分类Dev

导航到另一个页面JSF

来自分类Dev

如何导航到另一个WPF页面

来自分类Dev

从ListTile导航到另一个页面

来自分类Dev

如何从另一个页面导航到元素?

来自分类Dev

导航到另一个页面JSF

来自分类Dev

如何导航到另一个WPF页面

来自分类Dev

jQuery:单击一个按钮导航到另一个页面

来自分类Dev

从另一个ASPX页面导航到GridView的特定页面

来自分类Dev

如何使这些组件在反应中导航到另一个屏幕?

来自分类Dev

我如何使用道具在本机反应中从一个屏幕导航到另一个屏幕?

来自分类Dev

如何从Windows Phone 8.1中的用户控件导航到另一个页面

来自分类Dev

如果我导航到另一个页面,则setTimeout不起作用

来自分类Dev

导航到另一个页面时发生访问冲突异常-Windows Phone 8

来自分类Dev

导航到另一个页面时WP8.1应用程序崩溃

来自分类Dev

如何在JSF中导航到另一个页面?

来自分类Dev

关闭弹出窗口并导航到jQuery Mobile中的另一个页面

来自分类Dev

AngularJs代码以导航到buttonclick中的另一个页面

来自分类Dev

如何使用casperjs单击随机链接并导航到另一个页面?

来自分类Dev

C#Webbrowser控件无法导航到另一个页面

来自分类Dev

jQuery导航到另一个页面并显示div隐藏

来自分类Dev

React js使用变量导航到另一个页面

来自分类Dev

导航到另一个页面时请求http

来自分类Dev

关闭弹出窗口并导航到jQuery Mobile中的另一个页面

来自分类Dev

如何使用casperjs单击随机链接并导航到另一个页面?

来自分类Dev

如何在JSF中导航到另一个页面?

Related 相关文章

  1. 1

    反应导航从一个页面到另一个页面不起作用

  2. 2

    导航到另一个页面时,已登录的用户名消失

  3. 3

    反应本机导航到另一个类

  4. 4

    从ContinueFileOpenPicker方法导航到另一个页面

  5. 5

    导航到另一个页面JSF

  6. 6

    如何导航到另一个WPF页面

  7. 7

    从ListTile导航到另一个页面

  8. 8

    如何从另一个页面导航到元素?

  9. 9

    导航到另一个页面JSF

  10. 10

    如何导航到另一个WPF页面

  11. 11

    jQuery:单击一个按钮导航到另一个页面

  12. 12

    从另一个ASPX页面导航到GridView的特定页面

  13. 13

    如何使这些组件在反应中导航到另一个屏幕?

  14. 14

    我如何使用道具在本机反应中从一个屏幕导航到另一个屏幕?

  15. 15

    如何从Windows Phone 8.1中的用户控件导航到另一个页面

  16. 16

    如果我导航到另一个页面,则setTimeout不起作用

  17. 17

    导航到另一个页面时发生访问冲突异常-Windows Phone 8

  18. 18

    导航到另一个页面时WP8.1应用程序崩溃

  19. 19

    如何在JSF中导航到另一个页面?

  20. 20

    关闭弹出窗口并导航到jQuery Mobile中的另一个页面

  21. 21

    AngularJs代码以导航到buttonclick中的另一个页面

  22. 22

    如何使用casperjs单击随机链接并导航到另一个页面?

  23. 23

    C#Webbrowser控件无法导航到另一个页面

  24. 24

    jQuery导航到另一个页面并显示div隐藏

  25. 25

    React js使用变量导航到另一个页面

  26. 26

    导航到另一个页面时请求http

  27. 27

    关闭弹出窗口并导航到jQuery Mobile中的另一个页面

  28. 28

    如何使用casperjs单击随机链接并导航到另一个页面?

  29. 29

    如何在JSF中导航到另一个页面?

热门标签

归档