[英]How check state values(obj value) conditionally in react native
我需要有條件地檢查 state 值,我從 firestore 獲取用戶數據如下
const[userdata,setUserdata]=useState()
const fetchCard = async()=>{
// user
const uRef = query(doc(db,'users',user.uid))
await getDoc(uRef)
.then((snapshot)=>{setUserdata(snapshot.data())})
.catch((error)=>{
alert(error)
})
console.log("here",userdata)
}
它將用戶數據作為對象
here Object {
"age": "25",
"displayName": "ghd",
"gender": "female",
"id": "E8R52y6dD8XI3shXhnhS9pVzUpe2",
"interestIn": "male",
"job": "gdh",
"photo": "https://firebasestorage.googleapis.com/v0/b/match-me-now.appspot.com/o/images%2FE8R52y6dD8XI3shXhnhS9pVzUpe2%2FprofilePicture.jpeg?alt=media&token=9084cdcb-beb7-44d3-8ab9-98e193955e75",
"timestamp": Object {
"nanoseconds": 755000000,
"seconds": 1639913879,
},
}
但是當這個值沒有值時,我需要有條件地檢查這個值,以處理錯誤。 因為我會在useEffect中使用這個值,
useEffect(()=>{
fetchCard()
console.log("in effect",userdata.age)
},[])
如果 fetchCard 中沒有 object 值,這將導致從 useEffect 調用 value 時 useEffect 出錯。 所以我想檢查用戶數據值有沒有。 如果是數組值,只需檢查const newdata = userdata.length > 0? userdata: ["no"]
const newdata = userdata.length > 0? userdata: ["no"]
但是如何檢查這個 object 值有沒有? 需要幫忙。
您可以使用Object.keys
檢查您的 object 是否為空。 您可以查看此鏈接以獲取更多選項。
useEffect(() => {
if(userdata){
if(Object.keys(userdata).length == 0){
//if empty
}else{
//not emmpty
}
}
}, [userdata])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.