Reactjs 初始化状态对象时为空嵌套数组

Reactjs 初始化状态对象时为空嵌套数组,reactjs,Reactjs,我在react应用程序中初始化了以下状态: constructor(props) { super(props); this.state = { meetings: [], } } 我需要this.state.meetings包含{meetings:[]},直到根据用户操作填充它为止。如何在页面呈现之前设置此选项 原因是我在this.state.meetings.meetings上运行了映射函数,因此我得到了一个未定义的错误,如果默认值为[],这是有意义的。与

我在react应用程序中初始化了以下状态:

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:[]}}