javascript - React - 组件渲染后更改的值
问题描述
我一直在开发一个与食物相关的 React Native 应用程序,对于登录,我想分离为普通用户和餐厅返回的堆栈。
我遇到的问题是返回的值restaurantUserChecker
与第二个UseEffect
得到的不同。console.log('1', doc.exists)
为真,因此应该返回真。但是console.log('2', val)
是错误的,这会导致所有用户获得相同的堆栈。
async function restaurantUserChecker(){
const check = firestore().collection('restaurantUsers').doc(auth().currentUser.uid);
await (check.get()).then((doc) => {
if (doc.exists) {
console.log('1', doc.exists);
return true;
}
}).catch((error) => console.log(error));
return false;
}
function MyStack() {
const [restaurantUser, setRestaurantUser] = useState(false);
useEffect(() => {
console.log(auth().currentUser.uid);
restaurantUserChecker().then((val) => {
console.log('2', val);
setRestaurantUser(val);
}).catch((error) => console.log(error));
}, []);
if(restaurantUser){
return <RestaurantHomeStack/>
}
return <DrawerNavigator />;
}
export default function App() {
return (
<SafeAreaProvider>
<NavigationContainer>
<MyStack/>
</NavigationContainer>
</SafeAreaProvider>
);
}
我将不胜感激各种帮助,因为我在这个问题上已经挣扎了好几个小时。
解决方案
您的两个答案都有效,现在我了解导致问题的原因。如果允许我在这里引用蝙蝠侠的话,你们是我们不配但需要的英雄。非常感谢你们!
推荐阅读
- shake-build-system - 摇 - 如何复制目录的所有内容
- c++ - 这是 std::vector 和 std::shared_ptr 内存泄漏的错误吗?
- javascript - 使用 Fetch API 从外部文件加载 JSON?
- java - 在Java中复制文件而不锁定原始文件
- typescript - 按日期对对象数组进行排序
- php - 您必须使用“设置”方法来更新条目如何在 php codengniter 中纠正
- javascript - replace function is removing new line \n character
- php - 我在 PHP 中的数据库 UPDATE 查询有问题
- java - Android - FusedLocationClient、requestLocationUpdates() 不返回结果和可用性怪异行为
- python - 如何删除包含数字、特殊字符、网站 url 或电子邮件的整个句子?