gpt4 book ai didi

javascript - 为什么返回未定义?以及如何解决?

转载 作者:行者123 更新时间:2023-11-30 13:52:14 24 4
gpt4 key购买 nike

我正在尝试将快照值分配给一个能够包含在列表中的变量,因此它一直返回未定义。childItem(childItem.name etc) 值正在被正确添加,只有 profile.userName 返回为 undefined我正在使用 native react + firebase我已经尝试了几种方法来解决我没有得到的问题。

constructor(props) {
super(props);
this.state = {
list: []

};
firebase.database().ref('pets/lost').on('value', (snapshot) => {
let state = this.state;
state.list = [];

snapshot.forEach((childItem) => {


var profile = firebase.database().ref('/users/' + childItem.val().userUid + '/profile').on('value', (snapshot) => {
return{
userName: snapshot.val().name
}

});
alert('nome ' + profile.userName);
state.list.push({
key: childItem.key,
userName: profile.userName,
name: childItem.val().name,
breed: childItem.val().breed
});

});


this.setState(state);

});

}



render() {
return (
<View>
<FlatList
data={this.state.list}
renderItem={({ item }) => {
return (
<View style={styles.publiInfoContainer}>

<Image
style={styles.avatar}
source={{ uri: 'https://i.kinja-img.com/gawker-media/image/upload/s--HqfzgkTd--/c_scale,f_auto,fl_progressive,q_80,w_800/wp2qinp6fu0d8guhex9v.jpg' }}
/>

<View style={styles.textPubliInfo}>
<Text style={styles.name}>{item.userName}</Text>
<Text style={styles.date}>14/10/1997</Text>
</View>


</View>

);
}}

/>

</View>
);
}

最佳答案

尝试将代码移至您尝试访问的位置,并在内部 on value 回调中使用 profile.username 来处理功能的异步性质。

          firebase.database().ref('/users/' + childItem.val().userUid + '/profile').on('value', (snapshot) => {
const userName = snapshot.val().name;
alert(userName);
state.list.push({
key: childItem.key,
userName,
name: childItem.val().name,
breed: childItem.val().breed
});
this.setState(state);
});

关于javascript - 为什么返回未定义?以及如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58016740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com