簡體   English   中英

如何在本機反應中有條件地檢查 state 值(obj 值)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM