Reactjs React Redux-第一次渲染时状态未定义

Reactjs React Redux-第一次渲染时状态未定义,reactjs,websocket,redux,react-redux,redux-thunk,Reactjs,Websocket,Redux,React Redux,Redux Thunk,对于我的客户端,我正在基于websockets socket.io在react with redux中创建一个类似于Quike web app的东西,其中包含大量、非常独特的数据。没有用户交互,只有表示层。它的工作原理是这样的:我获取websocket事件,其中包含指向布局和有效负载数据的url,然后呈现给定的url,并使用数据作为参数触发redux操作,这将成为应用程序的状态。就这么简单。但我注意到,在第一次渲染时,初始状态是加载,而不是作为动作的参数从websocket中给出。正如我所说,我

对于我的客户端,我正在基于websockets socket.io在react with redux中创建一个类似于Quike web app的东西,其中包含大量、非常独特的数据。没有用户交互,只有表示层。它的工作原理是这样的:我获取websocket事件,其中包含指向布局和有效负载数据的url,然后呈现给定的url,并使用数据作为参数触发redux操作,这将成为应用程序的状态。就这么简单。但我注意到,在第一次渲染时,初始状态是加载,而不是作为动作的参数从websocket中给出。正如我所说,我得到的数据是巨大且唯一的,所以我不想在reducer中声明如下内容:

pageData: {
    assets: [],
    questions: [],
    details: []
pageData: {}
this.props.view.pageData.questions
等等。这要复杂得多,顺便说一句,这只是一个例子。我没有做这个,而是做了这样的东西:

pageData: {
    assets: [],
    questions: [],
    details: []
pageData: {}
this.props.view.pageData.questions
我希望在使用connect查看时,我可以获得如下数据:

pageData: {
    assets: [],
    questions: [],
    details: []
pageData: {}
this.props.view.pageData.questions
但后来我发现我不能得到这个,因为它在第一次渲染时是未定义的。因此,我的问题是:

有没有办法在第一次渲染时访问此数据而无需 宣布整个结构? 如果不是,我应该在reducer中重建给定的数据吗

然后我应该为每个页面创建减缩器吗?大约有20多个视图 具有唯一数据 当然,我可以在reducer中声明所有内容,但我觉得维护这么多数据非常困难。
但你知道,也许我太懒了,我应该为每个页面声明初始状态,而这个问题没有意义

我认为您在这里可能有一些选择:

如果未定义,请在组件中定义回退数据 在收到数据之前,不要呈现页面或组件 按照您的建议显式定义initialState 您的所有或大部分组件都期望或应该期望特定类型和特定格式的数据。因此,提前布置结构3似乎是最合适的。问问自己:如果web套接字事件数据的格式发生变化,我的应用程序是否仍能正确显示

具体回答您的问题:

有没有办法在第一次渲染时访问此数据而无需 宣布整个结构


是的,您可以在绑定中使用| |运算符将1回退到空数组、对象或值。示例我认为您可能有以下几种选择:

如果未定义,请在组件中定义回退数据 在收到数据之前,不要呈现页面或组件 按照您的建议显式定义initialState 您的所有或大部分组件都期望或应该期望特定类型和特定格式的数据。因此,提前布置结构3似乎是最合适的。问问自己:如果web套接字事件数据的格式发生变化,我的应用程序是否仍能正确显示

具体回答您的问题:

有没有办法在第一次渲染时访问此数据而无需 宣布整个结构


是的,您可以在绑定中使用| |运算符将1回退到空数组、对象或值。示例这是因为您没有在reducer中添加默认大小写

default:
    return state;

这是因为您没有在reducer中添加默认大小写

default:
    return state;

您可以为redux存储指定initialState。您可以为redux存储指定initialState。