@historydev
Острая аллергия на анимешников

Как получить значение вместо промиса?

Как получить значение вместо промиса? Если я пишу then, реакт выдаёт ошибку мол возвращаю не компонент.

Здесь получаю данные:

export default async function userState() {

    const response = await fetch('http://localhost:4000/isAuth', { method: 'POST' });
    const state = await response.json();

    return state

}


Сюда приходят через компонент:

export default function CreateForm({id, method, action, title, formType, userState}) {

    formType = formType === 1 ? 'authenticate' : formType === 2 ? 'registration' : null;

    userState = userState();

    console.log(userState);

    return !userState ? formType === 'authenticate' ?
        (
            <form action={action} method={method} className='form' id={id}>

                <div className="title">{title}</div>

                <CreateInput id='email' placeholder='E-mail' type='text' />
                <CreateInput id='password' placeholder='Password' type='password' />

                <CreateButton className='authentication-submit' text='Войти' buttonType={null} />

                <li className="form-link"><Link to="register">Регистрация</Link></li>

            </form>
        ) : formType === 'registration' ?
        (
            <form action={action} method={method} className='form' id={id}>

                <div className="title">{title}</div>

                <CreateInput id='name' placeholder='Имя' type='text' />
                <CreateInput id='email' placeholder='E-mail' type='text' />
                <CreateInput id='password' placeholder='Пароль' type='password' />
                <CreateInput id='current-password' placeholder='Повторите пароль' type='password' />

                <CreateButton className='register-submit' text='Регистрация' buttonType={null} />

                <li className="form-link"><Link to="/">Авторизация</Link></li>

            </form>
        ) : null : null

}
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
Это что то не сильно похожее на реакт у вас. Документацию читали?
Если вы пишете функциональный компонент, то почитайте https://reactjs.org/docs/hooks-faq.html#how-can-i-...

https://reactjs.org/docs/thinking-in-react.html
Если в кратце, то
1) Запрос к апи localhost:4000/isAuth нужно выполнить только один раз, во время монтирования компонента
2) Так как fetch - асинхронная функция, то результат напрямую получить не получится, нужно его сохранить в стейт
3) в return предусмотреть возможность вернуть трейтье состояние, когда данные еще не получены.
4) Прочитать доку от корки до корки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы