redux React:如何使用FIrebase为登录用户创建购物车?

9w11ddsr  于 2022-11-24  发布在  React
关注(0)|答案(1)|浏览(156)

我会用简单的语言解释。我已经创建了一个电子商务React应用程序,我使用Firebase创建了登录/注册功能,我正在将产品项目添加到<Cart />组件(就像每个购物网站一样),一切都运行良好但现在我想将用户添加到他/她购物车产品项目添加到Firebase。
这仅适用于注册用户,这意味着如果用户将产品添加到购物车,它将被存储在firebase上,一段时间后,当他/她重新登录时,购物车仍然与他们添加到购物车的产品相同。

注意:此功能不适用于未注册得用户,因为添加/删除项目得功能已经正常工作.

所以这就是我如何得到哪个用户登录到应用程序使用firebase,这里是代码:-

//App.js    
import Header from "./components/Header/Header";
import Cart from "./pages/Cart";
import Profile from "./pages/Profile";
import { auth} from "./firebase";

function App() {
    const [profileUser, setProfileUser] = useState();
    const [userName, setUserName] = useState(null);
    
    useEffect(() => {
        auth.onAuthStateChanged((user) => {
            if (user) {
                setUserName(user.displayName);              
                setProfileUser(user);
                console.log(user);
            } else {
                setUserName(null);
            }
        });
    }, [userName]);

    return (
        <div>
            <Header loggedUser={userName} />
            <MainWrapper>
                <Routes>
                    <Route path="/cart" element={<Cart />} /> 
                    <Route path="/profile" element={<Profile loggedUser={profileUser}/>} />
                </Routes>
            </MainWrapper>
        </div>
    );
}
tf7tbtn2

tf7tbtn21#

为每个用户创建一个名为“cart”的子集合,并在“cart”中为每个项目创建一个文档。
它看起来像这样(我用订单代替购物车)。

对于查询部分,

const collectionName = `$users/${userId}/cart`
addDoc(collection(db, collectionName), items)

相关问题