【问题标题】:Redux-form redirect to unknown urlRedux-form 重定向到未知 url
【发布时间】:2016-10-14 10:46:14
【问题描述】:

我正在尝试使用redux-form 创建一个表单并在基于react-redux-starter-kit 的项目中使用它

这是我的容器

import { connect } from 'react-redux'
import { loginUser, logoutUser } from '../modules/login'

import Login from '../components/Login'

const mapDispatchToProps = {
  loginUser,
  logoutUser,
};

const mapStateToProps = state => ({
  errorMessage: state.errorMessage,
});

export default connect(mapStateToProps, mapDispatchToProps)(Login)

这是表格

import React, { PropTypes } from 'react';
import { Input, Button, Card, CardText, CardTitle } from 'react-toolbox';
import { Field, reduxForm } from 'redux-form';

const Login = props => (
  <form onSubmit={props.loginUser}>
    <div>
      <label htmlFor="email">Email</label>
      <Field name="email" component="input" type="email"/>
    </div>
    <div>
      <label htmlFor="password">Password</label>
      <Field name="password" component="input" type="password"/>
    </div>
    <button type="submit">Submit</button>
  </form>
);

export default reduxForm({ form: 'login' })(Login);

loginUser 函数看起来像

export function loginUser(creds) {
  const config = {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      email: creds.email,
      password: creds.password,
    }),
  };

  return (dispatch) => {
    dispatch(requestLogin(creds))

    return fetch('http://localhost:3001/auth/login', config)
      .then(response => response.json().then(user => ({ user, response })))
      .then(({ user, response }) => {
        if (user.errors) {
          const errors = user.errors.map(error => error.detail);
          dispatch(loginError(errors))
          return Promise.reject(loginError(errors));
        }
        dispatch(receiveLogin(user));
      })
      .catch(err => console.log('Error: ', err));
  };
}

这个函数被调用,但我被重定向到

http://localhost:3000/login?email=test%40test.com&password=test

我找不到原因。你有什么想法吗?


这里是动作

function requestLogin(creds) {
  return {
    type: LOGIN_REQUEST,
    isFetching: true,
    isAuthenticated: false,
    creds,
  };
}

function receiveLogin(user) {
  return {
    type: LOGIN_SUCCESS,
    isFetching: false,
    isAuthenticated: true,
    id_token: user.id_token,
  };
}

function loginError(message) {
  return {
    type: LOGIN_FAILURE,
    isFetching: false,
    isAuthenticated: false,
    message,
  };
}

【问题讨论】:

  • 您搜索过loginError() 吗?可以在内部调度重定向
  • 你真的看到了 POST 请求吗?
  • 确实没有 POST 请求。如果我将debugger 放在loginUser 函数的开头,creds 似乎是一个事件。
  • @DamienLeroux loginError 永远无法到达
  • requestLogin()?

标签: reactjs redux react-redux redux-form


【解决方案1】:

在提交时修改您的表单-

 <form onSubmit={props.handleSubmit(props.loginUser)}>    
    </form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多