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