无法将数据从表单发送到Firestore数据库

瓦西里123

这是我第一次使用Firestore,我有一个注册表单,用于发送用户名,电子邮件和密码,以使用Firebase身份验证注册用户。问题是创建用户后,我想创建一个用户名以链接到该用户。通过下面的方法,我得到了错误:

警告:无法在已卸载的组件上执行React状态更新。这是空操作,但它表明应用程序中发生内存泄漏。要修复,请取消使用useEffect清理功能中的所有订阅和异步任务。

并且我的用户尚未注册。在Firestore中没有添加用户名的情况下,成功创建了我的用户,但似乎在尝试注册时出现内存泄漏,我不明白为什么,并且我需要一个不知道如何实现的清除函数。

我的代码:

import React, { createContext , useContext ,useState , useEffect} from 'react'
import {auth} from '../firebase';
import firebase from 'firebase/app';

const AuthContext = createContext();

export function AuthProvider({children}) {
 
  const [user,setUser] = useState('');
  const [loading,setLoading] = useState(true);

  function signup(email,password,username){ //this is where my error lies while trying to insert user to firestore collection of users 
    return ()=> { 
      auth.createUserWithEmailAndPassword(email,password)
      .then(()=>{
          firebase.firestore().collection('users').add({
           userName:username
         })
      })
      
    };
  }

  function signin(email,password){
    return auth.signInWithEmailAndPassword(email,password);
  }

  function logout(){
    return auth.signOut();
  }

  useEffect(() => {
   
    const unsubscribe = auth.onAuthStateChanged(user=>{
      setUser(user);
      setLoading(false);
    })

    return unsubscribe;
    //how can I use cleanup function here ? 
  }, []);
  
  const info = {
    user,
    signin,
    signup,
    logout
  }

  return (
    <AuthContext.Provider value = {info}>
      {!loading && children}
    </AuthContext.Provider>
  )
  
}

  export function useAuth(){
   return useContext(AuthContext);
  } 
实时性

我建议将上下文和firestore调用分开,请参见示例:

export const AuthContext = React.createContext();

export const AuthProvider = ({ children }) => {
  const [currentUser, setCurrentUser] = useState(null);
  const [pending, setPending] = useState(true);

  useEffect(() => {
    app.auth().onAuthStateChanged((user) => {
      setCurrentUser(user)
      setPending(false)
    });
  }, []);

  const userContext = {
    currentUser,
  };

  if(pending){
    return <>Loading...</>
  }

  return (
    <AuthContext.Provider
      value={
        userContext
      }
    >
      {children}
    </AuthContext.Provider>
  );
};

在Firebase.js中,例如使用:

const db = firebase.firestore();
const usersRef = db.collection('users');

export const doCreateUserWithEmailAndPassword = async (pEmail, pPassword, pUsername) => {
    const authResult = await app.auth().createUserWithEmailAndPassword(pEmail, pPassword);
    usersRef.doc(authResult.user.uid)
        .set({
            created: firebase.firestore.FieldValue.serverTimestamp(),
            email: pEmail,
            username: pUsername,
        });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数据从表单发送到数据库

来自分类Dev

无法将数据从用户表单发送到 PHP 中的数据库

来自分类Dev

如何将HTML表单数据发送到数据库?

来自分类Dev

Bootstrap表单将数据错误发送到MongoDB数据库

来自分类Dev

将XML数据发送到MySQL数据库

来自分类Dev

将textarea数据发送到数据库的麻烦

来自分类Dev

CRUD-我无法将特定数据发送到数据库

来自分类Dev

无法将Facebook用户数据发送到数据库

来自分类Dev

无法将数据发送到mysql数据库。这不是我的PHP代码

来自分类Dev

无法使用Volley将数据发送到数据库

来自分类Dev

无法将数据发送到mysql数据库。这不是我的PHP代码

来自分类Dev

将输入的信息发送到数据库中的MySQL表的HTML表单

来自分类Dev

如何使用php将表单内容发送到数据库

来自分类Dev

如何将表单值发送到节点/表达式以搜索数据库?

来自分类Dev

ReactJS:表单将错误的日期值发送到数据库

来自分类Dev

PHP表单将除图像外的所有内容发送到数据库

来自分类Dev

如何将表单输入值发送到在本地创建的Empty数据库?

来自分类Dev

将JSON发送到数据库时出错

来自分类Dev

将下拉列表的信息发送到数据库

来自分类Dev

无法将表单数据发送到 PHP 页面

来自分类Dev

无法将图片网址发送到数据库

来自分类Dev

无需切换页面,通过php将html表单数据发送到数据库

来自分类Dev

无法将数据网格的选定行发送到数据库,但发送 System.Windows.Controls.TextBlock 的文本

来自分类Dev

表单将数据发送到UserControls

来自分类Dev

将数据发送到Firestore很慢

来自分类Dev

Drupal 8、打印表单并将数据发送到数据库

来自分类Dev

我已经通过CDN使用了CKEditor,但是无法将数据发送到数据库

来自分类Dev

尝试使用HTML和Node.js将登录表单输入发送到数据库

来自分类Dev

使用EtherCard.h库将arduino数据发送到我的数据库

Related 相关文章

  1. 1

    将数据从表单发送到数据库

  2. 2

    无法将数据从用户表单发送到 PHP 中的数据库

  3. 3

    如何将HTML表单数据发送到数据库?

  4. 4

    Bootstrap表单将数据错误发送到MongoDB数据库

  5. 5

    将XML数据发送到MySQL数据库

  6. 6

    将textarea数据发送到数据库的麻烦

  7. 7

    CRUD-我无法将特定数据发送到数据库

  8. 8

    无法将Facebook用户数据发送到数据库

  9. 9

    无法将数据发送到mysql数据库。这不是我的PHP代码

  10. 10

    无法使用Volley将数据发送到数据库

  11. 11

    无法将数据发送到mysql数据库。这不是我的PHP代码

  12. 12

    将输入的信息发送到数据库中的MySQL表的HTML表单

  13. 13

    如何使用php将表单内容发送到数据库

  14. 14

    如何将表单值发送到节点/表达式以搜索数据库?

  15. 15

    ReactJS:表单将错误的日期值发送到数据库

  16. 16

    PHP表单将除图像外的所有内容发送到数据库

  17. 17

    如何将表单输入值发送到在本地创建的Empty数据库?

  18. 18

    将JSON发送到数据库时出错

  19. 19

    将下拉列表的信息发送到数据库

  20. 20

    无法将表单数据发送到 PHP 页面

  21. 21

    无法将图片网址发送到数据库

  22. 22

    无需切换页面,通过php将html表单数据发送到数据库

  23. 23

    无法将数据网格的选定行发送到数据库,但发送 System.Windows.Controls.TextBlock 的文本

  24. 24

    表单将数据发送到UserControls

  25. 25

    将数据发送到Firestore很慢

  26. 26

    Drupal 8、打印表单并将数据发送到数据库

  27. 27

    我已经通过CDN使用了CKEditor,但是无法将数据发送到数据库

  28. 28

    尝试使用HTML和Node.js将登录表单输入发送到数据库

  29. 29

    使用EtherCard.h库将arduino数据发送到我的数据库

热门标签

归档