Обновление пользователя, полученного от реакции-с-firebase-auth - PullRequest
0 голосов
/ 02 февраля 2020

Я создал приложение, начиная с очень простого примера для среды .

Подводя итог, кажется, что пользователь заходит в мое приложение в нижней части. Затем я передаю пользователя через реквизиты:

function App({user)){
 return <AppContainer user={users} />
}
export default withFirebaseAuth({
  providers,
  firebaseAppAuth,
})(App);

Позже в моем приложении я хочу обновить пользователя:

function AppContainer( { signOut, user } ){
  const [user, setUser] = useState(user);

  firebase.firestore().collection('users').doc(user.uid).get().then(function(doc) {
    if (doc.exists) {
      setUser(doc.data())

Но это не работает. Каков наилучший способ сделать это?

Кроме того, было бы идеально, если бы два вызова API можно было как-то объединить.

Последний вопрос - я не очень понимаю, как работает экспортная часть кода - это как контекст, и я должен быть в состоянии получить доступ к данным, поступающим как подпорки? Могу ли я перевести его в контекст?

1 Ответ

1 голос
/ 02 февраля 2020

Обычно для подобных вызовов API используется useEffect ловушка, поскольку документация гласит:

Если вы знакомы с методами жизненного цикла класса React, вы можете подумать о useEffect Крюк как componentDidMount, componentDidUpdate и componentWillUnmount вместе взятых.

Сначала я бы добавил вызовы firebase в этот хук, а затем я бы изменил user имя переменной, у вас есть один, проходящий через реквизит, и аналогичным образом вы определяете с помощью useState.

Я хотел бы использовать следующее:

function AppContainer( { signOut, user } ){
  const [currentUser, setCurrentUser] = useState(user);

  useEffect(() => {
     firebase.firestore().collection('users').doc(currentUser.uid).get().then(function(doc) {
        if (doc.exists) {
            setUser(doc.data());
        }
     });
  }, []);

В конце вы получите получить возвращенную информацию пользователя из firebase в currentUser объекте состояния.

Надеюсь, это поможет!

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