【发布时间】:2020-05-28 17:02:07
【问题描述】:
我正在尝试从本地存储中获取 useremail,但电子邮件没有立即更新。
我尝试过的解决方案 -
1. 在依赖数组中使用电子邮件,这会更新电子邮件,但不会在 DOM 中重新渲染人员
2. 在依赖数组中同时使用电子邮件和人员,这导致无限调用useEffect。
3.我在没有承诺的情况下直接尝试过,也没有更新电子邮件。
请提出正确的处理方法。
const [people,setPeople]=useState([])
const [email,setEmail] = useState('')
useEffect(()=>{
new Promise((res,rej)=>{
setEmail(localStorage.getItem('userid')) //here is issue
if(email) res();
else rej(email);
}).then(
fire.firestore()
.collection('Users').where('Email','==',email)
.get().then((snapshot)=>{
console.log(snapshot)
setPeople(snapshot.docs[0].data().Name)
})
.catch(e=>{console.log(e)})
)
.catch((e)=>{console.log(e)})
},[email,people])
【问题讨论】:
标签: javascript reactjs local-storage react-hooks