Firebase и React Auth, как обновить информацию о пользователе

Я пытаюсь запустить две асинхронные функции, но продолжаю получать следующую ошибку.

error: Unhandled Promise Rejection: RangeError: Maximum call stack size exceeded.

Может ли кто-нибудь помочь с этим. Мне нужно обновить отображаемое имя, адрес электронной почты и пароль, и они нужны мне в разных функциях в моем useAuth.js. Я получаю ошибку только при попытке запустить более 1 функции

профиль.js

//context 
const {
    updateDisplayName,
    updateEmail,
    updatePassword,
  } = useAuth();

//   when update button is pressed this function runs
const handleSubmit = async (event) => {
    // prevent page from reloading
    event.preventDefault();

    // make sure there no old error before making new request
    setErrorUpdating([]);

    await updateDisplayName(displayName)
    await updateEmail(email);
    await updatePassword(password)
}

useAuth.js

async function updateDisplayName(displayName) {
    const updateDisplayName = await updateProfile(currentUser, { displayName });
    // update the ui with the updated profile
    const newUserObj = { ...currentUser, displayName };
    setCurrentUser(newUserObj);

    return updateDisplayName;
}

async function updateEmail(email) {
    return await updateEmail(currentUser, email);
}

async function updatePassword(password) {
    return await updatePassword(currentUser, password);
}
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эти два вызова методов вызывают сами себя до бесконечности:

async function updateEmail(email) {
    return await updateEmail(currentUser, email);
}

async function updatePassword(password) {
    return await updatePassword(currentUser, password);
}

Обратите внимание, что ваш пользовательский updateEmail вызвал сам себя, как и updatePassword. Вы, вероятно, пытаетесь вызвать там эквиваленты Firebase, но ваши пользовательские функции затеняют импорт Firebase.

Вы можете переименовать свои пользовательские функции, чтобы они не конфликтовали с именами Firebase:

async function updateEmailForCurrentUser(email) {
    return await updateEmail(currentUser, email);
}

async function updatePasswordForCurrentUser(password) {
    return await updatePassword(currentUser, password);
}

А затем вызовите это в handleSubmit:

const handleSubmit = async (event) => {
    ...
    await updateEmailForCurrentUser(email); // ?
    await updatePasswordForCurrentUser(password); // ?
}

Вы правы, я только что понял это. Не обращал внимания на название функции

Jerry seigle 17.05.2022 05:24

Другие вопросы по теме