Используйте HOC, React Context и componentDidMount API, чтобы получить форму UID Firebase - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь использовать HigherOrderComponent (HOC) для предоставления UID пользователя Firebase компоненту (Comp).Значение успешно получено, но мне не удается получить его в обернутом компоненте (Comp).Ниже я опишу порядок событий в HOC и обернутом Компоненте (Comp):

HOC: constructor () устанавливает state.uid = null;render () оборачивает Comp в компонент Provider со значением = this.state.uid.Компонент Consumer с prop uid = {value} (где значение предоставляется компонентом Provider) упаковывает Comp

. В componentDidMount () я выполняю асинхронный вызов бэкэнда Firebase (firebase.auth.onAuthStateChanged ()).

Comp: render () fires;componentDidMount () срабатывает.this.props.uid имеет значение null, потому что асинхронный вызов еще не завершен;

HOC: в componentDidMount () разрешается вызов бэкэнда Firebase.Если не ноль, я делаю this.setState ({uid: value}), где value - это значение от асинхронного вызова.Это вызывает новый рендер () HOC.Компонент провайдера со значением new this.state.uid возвращается.

Comp: render () запускается второй раз;componentDidMount () должен запускаться, чтобы я мог получить доступ к this.props.uid и использовать это значение для извлечения данных и прочего, но ... this.props.uid имеет значение null.

IПредполагается, что компонент componentDidUpdate запускается после срабатывания метода рендеринга Компонента, но здесь этого не происходит.Установка точек останова или console.log () показывает это.

Забавно то, что когда в методе Comp render () я отображаю объект this.props.uid (через JSON.stringify ()), он показывает!Таким образом, метод render может получить доступ к обновленному значению реквизита, но componentDidUpdate никогда ...

Что здесь не так?Я что-то упустил re: Реагирует на методы жизненного цикла?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...