Javascript 无法将未定义或null转换为react中的对象

Javascript 无法将未定义或null转换为react中的对象,javascript,reactjs,firebase,firebase-realtime-database,Javascript,Reactjs,Firebase,Firebase Realtime Database,我正在尝试从初始状态对象映射对象属性。我可以获取除嵌套的milesotnes之外的所有属性 初始状态在components类构造函数中定义,如下所示: class GoalView扩展组件{ 建造师(道具){ 超级(道具); 此.state={ 数据目标:{}, uid:firebaseAuth().currentUser.uid, currentGoalId:this.props.match.params.goalId, }; } componentDidMount=()=>{ const

我正在尝试从初始状态对象映射对象属性。我可以获取除嵌套的
milesotnes
之外的所有属性

初始状态在components类构造函数中定义,如下所示:

class GoalView扩展组件{
建造师(道具){
超级(道具);
此.state={
数据目标:{},
uid:firebaseAuth().currentUser.uid,
currentGoalId:this.props.match.params.goalId,
};
}
componentDidMount=()=>{
const dataGoalRef=dbRef.child('goals/'+this.state.uid+'/'+this.state.currentGoalId);
dataGoalRef.on('value',snap=>{
这是我的国家({
dataGoal:snap.val(),
currentGoalId:this.props.match.params.goalId,
});
});
}
组件将卸载=()=>{
此.state={
currentGoalId:null,
};
}
...

}
在使用
Object.keys()
之前,请检查
数据目标,如下所示:

this.state.dataGoal.millements和&Object.keys(this.state.dataGoal.millements)

原因:您正在从服务器获取数据,这需要时间,直到
this.state.dataGoal.millements
未定义

或者,您可以通过使用
bool
in state变量保持渲染,直到没有获取数据为止

选中此项,将产生相同的错误:

设a={};

Object.keys(a.a.map)(el=>console.log(el))非常感谢@Mayank为您提供的所有建议。我以为这和我不能让它工作的东西有关。关于上述代码还有其他建议吗?我是一个新的反应,所以任何帮助都是感激的。再次感谢。rest一切正常,还有一件事我想建议你(我过去经常这么做),试着让render方法尽可能小,这意味着如果你想运行一些循环来创建ui或其他js条件,把它放在一个函数中,并在render中调用该函数,它将帮助您管理代码和其他人了解您正在做什么:)感谢您的修订和建议。:)