Почему не работает моя отправка? Реагировать на Redux - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь изменить свое имя пользователя в firebase, используя хранилище резервов.

У меня есть форма регистрации, которая получает адрес электронной почты, пароль и имя пользователя для ввода, а затем форма создает учетную запись firebase с адресом электронной почты и паролем, затем я обновляю displayName, используя updateProfile из firebase. Посмотреть это

Это мой редуктор:

case "CHANGE_USERNAME":
      const currentUser = firebase.auth().currentUser;

      currentUser.updateProfile({ displayName: state.user.displayName });

      return { ...state.user, displayName: action.payload };

Это магазин:

const initialState = {
  logged: null,
  user: {}
};

И это часть моей регистрационной формы:

firebase
        .auth()
        .createUserWithEmailAndPassword(this.state.email, this.state.password)
        .then(() => {
          this.props.dispatch({
            type: "CHANGE_USERNAME",
            payload: { ...this.state.username }
          });

          alert("Account created!");
        })
        .catch(error => {
          // Handling errors
          var errorCode = error.code;
          var errorMessage = error.message;
          alert(errorCode);
        });

Почему имя пользователя не меняется?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Спасибо всем, я исправил проблему, используя:

case "CHANGE_USERNAME": {
      const currentUser = firebase.auth().currentUser;

      currentUser.updateProfile({ displayName: action.payload });

      return {
        ...state,
        user: { ...currentUser.providerData[0] }
      };
    }

У моего редуктора и:

this.props.dispatch({
      type: "CHANGE_USERNAME",
      payload: this.state.displayName
    });

На мою рассылку, спасибо!

0 голосов
/ 10 января 2019

Вы ничего не возвращаете из своего обещания. Предполагая, что createUserWithEmailAndPassword возвращает обещание и что ответ содержит поле username, вы хотите отправить response.username вашему редуктору.

    .then((response) => {
      this.props.dispatch({
        type: "CHANGE_USERNAME",
        payload: { response.username }
      });

      alert("Account created!");
    })

В вашем редукторе вы хотите добавить новое состояние username. Что-то вроде:

return { ...this.state, username: payload }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...