Reactjs 初始化状态对象时为空嵌套数组
我在react应用程序中初始化了以下状态:Reactjs 初始化状态对象时为空嵌套数组,reactjs,Reactjs,我在react应用程序中初始化了以下状态: constructor(props) { super(props); this.state = { meetings: [], } } 我需要this.state.meetings包含{meetings:[]},直到根据用户操作填充它为止。如何在页面呈现之前设置此选项 原因是我在this.state.meetings.meetings上运行了映射函数,因此我得到了一个未定义的错误,如果默认值为[],这是有意义的。与
constructor(props) {
super(props);
this.state = {
meetings: [],
}
}
我需要this.state.meetings
包含{meetings:[]}
,直到根据用户操作填充它为止。如何在页面呈现之前设置此选项
原因是我在
this.state.meetings.meetings
上运行了映射函数,因此我得到了一个未定义的错误,如果默认值为[],这是有意义的。与其在代码中处理这个问题,我想知道是否可以将会议:[]设置为默认值?我强烈建议您将其存储为嵌套结构。尽量使它平放。因此,不必直接设置嵌套字段Meetings
inside状态,只需在Meetings
字段中推送或替换从api接收的数据即可
yourApiCall.then((response) => { // some pseudo code
this.setState({ meetings: response.Meetings });
});
是的,这相对简单,只要做就行了
constructor(props) {
super(props);
this.state = {
meetings: {
Meetings: []
},
}
}
p、 让对象父名称与子对象名称相同也是不好的做法:)您可以执行
this.state={meetings:{meetings:[]}
,因为javascript是无类型的,this.state.mettings稍后可以分配给[]
或者更安全的方式:
// if meetings.Meetings is undefined, use empty array
const Meetings = this.state.meetings.Meetings || [].
//use Meetings to do stuff
有什么原因不能只设置
this.state={meetings:{meetings:[]}}
?