似乎是个小问题.
我有一个应用程序,人们可以通过"stripe"订阅.希望根据订阅提供对几个URL的访问,否则会将它们带回"配置文件"页面.
有几件事不管用.
-
获取subscription的Firebase查询未给出订阅结果.不知怎的,onSnapShot什么也拿不到.可能是因为UID在页面呈现开始时为空.
-
条件运算符on不起作用.不确定这件事有什么问题.
function PaidRoutes(props) {
const [subscription, setSubscription] = useState([]);
const [loading, setLoading] = useState(false);
useEffect(() => {
const unsub = auth.onAuthStateChanged((authObject) => {
unsub();
if (authObject) {
setLoading(true);
const uid = auth.currentUser?.uid;
console.log('UID ==>', uid);
let docRef = query(collection(db, 'customers', uid, 'subscription'));
console.log('DOC REF ==> ', docRef);
onSnapshot(docRef, (snap) => {
snap.forEach((doc) => {
console.log('Role of Subscription', doc.data().role);
setSubscription(doc.data().role);
});
});
} else {
console.log('not logged in');
setLoading(false);
}
});
return () => {
unsub();
};
}, []);
return (
<Route
{...props}
render={(props) =>
subscription ? (
<Component {...props} />
) : (
<Redirect to='/profileScreen' />
)
}
/>
);
感谢Drew的 comments .react-router-dom的安装版本是5.2.0