Почему я не могу передать данные ответа в магазин - PullRequest
0 голосов
/ 21 февраля 2020

У меня проблемы с отправкой значения состояния компонента в хранилище редуксов. Моя идея заключается в том, что я буду отправлять в хранилище редуксов только данные ответов API и после этого получу доступ к ним с разных экранов:

Когда я попробую, я получаю сообщение об ошибке: ReferenceError: действие не определено при loginSuccessful (http://packager.yz-9ze.anonymous.easy…}

Вот мой код компонента:

import { loginSuccessful } from "../../redux/actions/loginacction";

class Login extends Component {
  constructor(props) {
    super(props);
    this.state = {
      user: {
        login: "",
        password: ""
      },
      activity: false,
      response: {},
      showpassword: true
    };
  }

  _login = async () => {
    if (this.state.user.login !== "" && this.state.user.password !== "") {
      console.log(this.state);
      this.setState({ activity: true });
      try {
        await Axios.post(LoginAPI, this.state, {
          headers: { appversion: 1.4 }
        })
          .then(response => {
            console.log(response);
            const status = response.status;
            if (status === 200) {
              this.setState({ activity: false });
              this.setState({ response: response.data });
              const userData = this.state.response;
              this.props.dispatch(loginSuccessful(userData));
              //this.props.login_api_call;
              //this.props.navigation.navigate("CreateMove");
              console.log(this.state);
            }
          })
          .catch(error => {
            console.log({ error });
            this.setState({ activity: false });
            Alert.alert("Error", error.response.data.error);
          });
      } catch (error) {}
    } else {
      Alert.alert("Support", "Enter Email and Password");
    }
  };

const mapStateToProps = state => {
  return {
    userData: state.loginCredentialsReducer
  };
};

// const mapDispatchToProps = dispatch => {
//   return {
//     login_api_call: userData => dispatch(loginSuccessful(userData))
//   };
// };
export default connect(mapStateToProps)(Login);

Вот мое действие тип и создатель:

export const LOGINSUCCESSFUL = "LOGINSUCCESSFUL";

export const loginSuccessful = userData => {
  console.log(action);
  return {
    type: LOGINSUCCESSFUL,
    payload: userData
  };
};


А вот и мой редуктор

import {LOGINSUCCESSFUL} from "../actions/actiontypes";

const initialState = {
  userData: {}
};

const loginCredentialsReducer = (state = initialState, action) => {
  switch (action.type) {
    case LOGINSUCCESSFUL:
      return {
        ...state,
        userData: action.payload
      };
    default:
      return state;
  }
};
export default loginCredentialsReducer;

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Вы звоните console.log(action) здесь, но action нигде не объявлено. Отсюда и ошибка.

export const LOGINSUCCESSFUL = "LOGINSUCCESSFUL";

export const loginSuccessful = userData => {
  console.log(action); // <-- action is not declared anywhere
  return {
    type: LOGINSUCCESSFUL,
    payload: userData
  };
};
0 голосов
/ 21 февраля 2020

В этом:

export const loginSuccessful = userData => {
  console.log(action);
  return {
    type: LOGINSUCCESSFUL,
    payload: userData
  };
};

вы никогда не определяли действие, следовательно, ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...