Единственный случай, когда с вами может случиться то, что email
приходит от какого-то асинхронного вызова.Вот как это происходит:
email
- это состояние undefined
.Но вы делаете асинхронный вызов, чтобы получить email
. - . Вы визуализируете компоненты, но
email
- это undefined
, потому что асинхронный вызов еще не завершен, поэтому вы утешаете undefined
в * 1013.*. - Затем вы получаете результат асинхронного вызова setState электронной почты, он переходит в подпорки и перерисовывает
Dashboard
с правильным адресом электронной почты.
Таким образом,вы видите письмо обработанным, но в componentDidMount
оно не определено.Он рендерится 2 раза и только за секунды, после того, как компонент уже смонтирован, вы получаете правильный email
.
Это единственный случай, когда вы можете видеть данные, но они не определены в componentDidMount
и я почти уверен, что это ваш случай.
Вы почти не предоставили код для решения вашей проблемы, и единственное, что я могу сделать, это сообщить вам причину вашей проблемы, сделав некоторые предположения о вашемдело.Надеюсь, что это поможет вам понять вашу проблему и решить ее.
Редактировать: В вашем коде вы получаете электронную почту, используя firebase (асинхронный вызов), поэтому мои предположения верны, теперь просто нужно знать, каковы ожидаемые результаты.
Редактировать: Если вам нужно выполнить какое-либо действие с электронной почтой внутри компонента, используйте componentDidMount
Для вашего случая вы можете сделать
componentDidUpdate(prevProps) {
// Typical usage (don't forget to compare props):
if (this.props.email != undefined && this.props.email !== prevProps.email) {
// Do what you want with email
}
}