Создать действие с полезной нагрузкой

Я пишу приложение ReactJS с redux и redux-действиями. Я хотел бы создать действие redux с данными для входа в полезную нагрузку следующим образом:

{
   type: 'AUTH_REQUEST',
   payload: { login: 'Foo', password: 'bar' },
}

... но все мои попытки не увенчались успехом.

Согласно документации, должен быть способ добавить данные в полезную нагрузку, но Я недостаточно разбираюсь в стеке веб-интерфейса, чтобы по-настоящему понять.

Вот что у меня есть на данный момент:

action.js

import { createAction } from 'redux-actions';

export const AUTH_REQUEST = 'AUTH_REQUEST'

export const authRequest = createAction(AUTH_REQUEST);

loginFormContainer.js

const mapStateToProps = state => ({
    isLoggedIn: state.authentication.isLoggedIn
})

const mapDispatchToProps = dispatch => ({
    authRequest: () => dispatch(authRequest())
})

export const LoginFormContainer = connect(
    mapStateToProps,
    mapDispatchToProps
)(LoginForm)

loginForm.js

  constructor(props) {
    super(props);
    this.state = {
      email: '',
      password: '',
      errors: {email: '', password: ''},
      emailValid: false,
      passwordValid: false,
      formValid: false
    };
    this.handleEmailChange = this.handleEmailChange.bind(this);
    this.handlePasswordChange = this.handlePasswordChange.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
  }

 handleSubmit(event) {
    event.preventDefault();
    this.props.authRequest();
  }

Я считаю, что я должен иметь возможность предоставить адрес электронной почты и пароль, хранящиеся в состоянии loginForm, когда я обрабатываю отправку, но я не знаю, как это сделать ... (Да, я новичок в js). Кто-нибудь может помочь мне в этом, пожалуйста?


person Cedric Royer-Bertrand    schedule 26.04.2019    source источник


Ответы (1)


action.js

const authRequest = createAction(AUTH_REQUEST, (login, password) => ({ login, password }));

loginFormContainer.js

const mapDispatchToProps = dispatch => ({
    authRequest: (...args) => dispatch(authRequest(...args))
})

loginForm.js

handleSubmit(event) {
    event.preventDefault();
    const { email, password } = this.state;
    this.props.authRequest(email, password);
}
person hackape    schedule 26.04.2019