Моя отправка за изменение состояния в приставке не называется? - PullRequest
0 голосов
/ 18 июня 2019

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

Это мое действие resetPassword, когда я вызываю рассылки:

export const resetPassword = values => async dispatch => {
  try {
    const token = window.location.href.split("/")[4];
    const data = {
      password: values.password,
      confirmPassword: values.confirmPassword,
      token
    };
    // let res = await axios.post(API_URL + "/resetuserpassword", data);
    // console.log("resStatus:", res);
    window.location.href = "http://localhost:3000/login";
    dispatch({
      type: RESET_SUCCESS,
      payload:
        "You successfully reset the password , just log in with the new one."
    });
    await sleep(2000);
    dispatch({
      type: RESET_SUCCESS,
      payload: ""
    });
catch (error) {
    console.log("error occured:", error);

Мой сбросPassReducer:

import { RESET_SUCCESS } from "../actions/types";

export default (state = { success: "" }, action) => {
  switch (action.type) {
    case RESET_SUCCESS:
      console.log("RESET_SUCCESS DISPATCHED...");
      return {
        success: action.payload
      };

    default:
      return state;
  }
};

и моя функция renderMessage в компоненте Login:

renderMessage = () => {
    const error = this.props.error;
    const success = this.props.success;

    if (success) {
      return (
        <FlashMessage duration={5000} style="color">
          <p style={{ color: "green" }}> {success.toString()} </p>
        </FlashMessage>
      );
    }
return null;
  };

1 Ответ

0 голосов
/ 18 июня 2019

Вы совершаете навигацию перед отправкой вызовов.Весь код, расположенный после window.location.href = '...', не будет выполнен.

Просто переместите window.location.href = "http://localhost:3000/login"; в конец вашего блока.

...