Javascript 无法在useEffect内设置状态
我想使用react钩子将值设置为Javascript 无法在useEffect内设置状态,javascript,reactjs,firebase,firebase-realtime-database,react-hooks,Javascript,Reactjs,Firebase,Firebase Realtime Database,React Hooks,我想使用react钩子将值设置为nickidstate 数据库中的UID有一个值,然后我设置了state和console.log,之后显示null 你知道为什么吗 我的代码: const [nickid, setNickid] = useState(null); //uid useEffect(() => { firebase.database().ref('/users/').orderByChild('user').equalTo(props.match.params.use
nickid
state
数据库中的UID有一个值,然后我设置了state和console.log,之后显示null
你知道为什么吗
我的代码:
const [nickid, setNickid] = useState(null); //uid
useEffect(() => {
firebase.database().ref('/users/').orderByChild('user').equalTo(props.match.params.user).once('value').then(snapshot => {
if (snapshot.exists()){
var uid = Object.keys(snapshot.val())[0]; //uid has a value
setNickid({ nickid: uid });
console.log(nickid); // here is null
Firstthing
setState/setNickid
是一个异步函数,因此您不会在它之后直接获得该值
第二次,更改此设置
setNickid({ nickid: uid });
到
第一件事
setState/setNickid
是异步函数,因此您不会在它之后直接获得该值
第二次,更改此设置
setNickid({ nickid: uid });
到
设置状态是异步函数(不会立即执行) 如果您想在更改时控制台记录nickid
useEffect(()=>{
console.log(nickid)
},[nickid])
setState是异步函数(不立即执行) 如果您想在更改时控制台记录nickid
useEffect(()=>{
console.log(nickid)
},[nickid])
setNickid是异步的,因此console.log(nickid)是初始值。状态尚未更新。setNickid是异步的,因此console.log(nickid)是初始值。状态尚未更新。