Обновление пользовательской картинки firebase не отображает новую фотографию до перезагрузки приложения - PullRequest
0 голосов
/ 11 февраля 2019

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

Вот структура:

Вот функция, которую я использую для изменения изображения:

export const changeUserAvatar = (userId, imageUrl) => {
    firebaseService
      .database()
      .ref('users/' + userId)
      .update({
        profilePicture: imageUrl
      });
  };

А вот как я рендеринг изображения:

<Avatar size="xlarge" rounded source={{ uri: this.props.profilePicture }} onPress={this.openPicker}/> :

Я используюRedux для управления состоянием и подумал бы, что он будет автоматически перерисован с обновлением значения изображения профиля.Я попробовал все здесь:

https://github.com/facebook/react-native/issues/9195

https://github.com/facebook/react-native/issues/12606

И когда я пытаюсь добавить что-то подобное, я не получаю изображение вообще, и оно отображается как пустой экран:

{{uri: profilePicture + '?' + new Date()}}

Я сталкиваюсь с той же проблемой, когда возвращаюсь к списку своих сообщений / картинка меняется только при полной перезагрузке приложения.

1 Ответ

0 голосов
/ 17 апреля 2019

Я наконец-то получил решение этой проблемы:

componentDidUpdate(prevProps) {
    if (this.props.photoUrl && prevProps.photoUrl !== this.props.photoUrl) {
        this.setState({ profilePicture: this.props.photoUrl })
    }
}

По сути, я просто решил сохранить новое изображение как состояние.

...