登录“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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

导航到另一个页面JSF

来自分类Dev

如何导航到另一个WPF页面

来自分类Dev

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

来自分类Dev

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

来自分类Dev

从ListTile导航到另一个页面

来自分类Dev

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

来自分类Dev

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

来自分类Dev

反应本机导航到另一个类

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

导航到另一个页面JSF

来自分类Dev

如何导航到另一个WPF页面

来自分类Dev

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

来自分类Dev

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

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

    导航到另一个页面JSF

  12. 12

    如何导航到另一个WPF页面

  13. 13

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

  14. 14

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

  15. 15

    从ListTile导航到另一个页面

  16. 16

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

  17. 17

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

  18. 18

    反应本机导航到另一个类

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

    导航到另一个页面JSF

  27. 27

    如何导航到另一个WPF页面

  28. 28

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

  29. 29

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

热门标签

归档