Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我试着推动历史,但它总是不确定的反应_Javascript_Reactjs_React Router Dom - Fatal编程技术网

Javascript 我试着推动历史,但它总是不确定的反应

Javascript 我试着推动历史,但它总是不确定的反应,javascript,reactjs,react-router-dom,Javascript,Reactjs,React Router Dom,我在试图推历史,但它总是不确定的 import React, { useEffect, useState } from "react"; import * as Firebase from "firebase/app"; import "firebase/auth"; import DBAPI from "./database/database-api" import DBName from "./database/database-name" import { useHistory } fro

我在试图推历史,但它总是不确定的

import React, { useEffect, useState } from "react";
import * as Firebase from "firebase/app";
import "firebase/auth";
import DBAPI from "./database/database-api"
import DBName from "./database/database-name"
import { useHistory } from "react-router-dom";

export const UserContext = React.createContext();

export const UserProvider = ({ children }) => {
  const [currentUser, setCurrentUser] = useState(null);
  const [isAdmin, setIsAdmin] = useState(null);
  const [isVendor, setIsVendor] = useState(null);
  const [pending, setPending] = useState(true);

  let history = useHistory();

  useEffect(() => {
    Firebase.auth().onAuthStateChanged(async (user) => {
        if (user != null) {
            setCurrentUser(user)

            let response = await Promise.all([
              DBAPI.checkUserExist(DBName.admin, user.uid),
              DBAPI.checkUserExist(DBName.vendor, user.uid)
            ]);

            console.log(response[0].data)
            console.log(response[1].data)

            if (response[0].data) setIsAdmin(true)  // admin
            if (response[1].data) setIsVendor(true) // vendor

            history.push(`${process.env.PUBLIC_URL}/products`)
        } else {
            setIsVendor(false)
            setIsAdmin(false)
        }

        setPending(false)
    });
  }, []);

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

  return (
    <UserContext.Provider
      value={{
        currentUser,
        isAdmin,
        isVendor
      }}
    >
      {children}
    </UserContext.Provider>
  );
};
import React,{useffect,useState}来自“React”;
从“Firebase/app”导入*作为Firebase;
导入“firebase/auth”;
从“/database/database api”导入DBAPI
从“/database/database name”导入数据库名
从“react router dom”导入{useHistory};
export const UserContext=React.createContext();
export const UserProvider=({children})=>{
const[currentUser,setCurrentUser]=useState(null);
const[isAdmin,setIsAdmin]=useState(null);
const[isVendor,setIsVendor]=useState(null);
const[pending,setPending]=useState(true);
让历史=使用历史();
useffect(()=>{
Firebase.auth().onAuthStateChanged(异步(用户)=>{
如果(用户!=null){
setCurrentUser(用户)
让回应=等待承诺([
DBAPI.checkUserExist(DBName.admin,user.uid),
DBAPI.checkUserExist(DBName.vendor,user.uid)
]);
console.log(响应[0]。数据)
console.log(响应[1]。数据)
if(响应[0].data)setIsAdmin(true)//admin
if(响应[1].data)setIsVendor(true)//vendor
history.push(${process.env.PUBLIC\u URL}/products`)
}否则{
setIsVendor(假)
setIsAdmin(假)
}
setPending(false)
});
}, []);
如果(待定){
返回加载。。。
}
返回(
{儿童}
);
};

代码看起来正常。只需确保组件包装在
上下文中即可