Reactjs 如何从flux中的单个xhr调用加载嵌套组件。

Reactjs 如何从flux中的单个xhr调用加载嵌套组件。,reactjs,xmlhttprequest,flux,Reactjs,Xmlhttprequest,Flux,我必须动态呈现jsx组件,如下所示: <document> <page> <frame> <image> </image> </frame> </page> </document> 其中(整个文档)来自单个服务调用,现在我的每个组件如文档、框架、页面、图像都有各自的存储,如文档存储、页面存储等。 当我从

我必须动态呈现jsx组件,如下所示:

<document>
    <page>
        <frame>
            <image>
            </image>
        </frame>
     </page>
</document>
其中(整个文档)来自单个服务调用,现在我的每个组件如文档、框架、页面、图像都有各自的存储,如文档存储、页面存储等。 当我从api接收到数据时,我调用操作来更新文档存储,但不知道如何更新其他嵌套组件存储

若我使用道具将数据发送到嵌套的子组件,我认为我违反了规则

真理之源

这就是为什么要用数据更新存储,然后使用存储设置组件的状态

但若我试图通过文档存储中的操作更新页面存储,然后从页面存储中更新框架存储,react将给我错误“无法在发送过程中发送”。 我相信我遗漏了一个核心点,但它是什么

但若我试图通过文档存储中的操作更新页面存储,然后从页面存储中更新框架存储,react将给我错误“无法在发送过程中发送”

你确实遗漏了一个核心点

flux的目的是使数据单向流动。每个焊剂流应该只接收来自另一个位置的信息

因此,您的存储应该只从调度器接收信息,并且只向组件发送数据。您正在尝试对门店进行串扰,或者让门店向调度员发送信息。这两项都不被接受

相反,如果您希望页面存储和框架存储都使用此数据,只需让它们都侦听相同的调度,并以各自的方式响应

也就是说,我不会那样解决这个问题

若我使用道具将数据发送到嵌套的子组件,我认为我违反了真理之源

在理想的通量流中,只有一个组件应该与存储器通信。该组件称为“容器”,是整个应用程序的顶级父组件。然后,它成为所有孩子的真相之源,通过道具将信息传递给他们


是来自Flux文档的此类描述。

通常,如果我使用的是前期数据加载,这意味着我只加载一次数据,以后再也不会加载,我将执行该数据加载,然后填充我的存储,然后呈现我的组件。现在,如果我根据用户迭代进行多个数据调用,我将使用源代码,并让我的存储包含组件使用的状态。然后使用操作修改存储,并且当存储值更改时,我的组件将更新。您是否建议在收到apiutils的响应时,我应该在一个位置填充所有存储?我不确定您正在使用哪些工具。这取决于您决定是否预先加载适用于您拥有的数据量,还是仅在绝对需要时加载数据。我现在正在构建一个工具,可以预先加载2个json文件,这些文件的总大小为150kb。立即加载它们更容易、更直观。仔细想想,这可能比页面上的大多数图像都少kb。但是,如果您不断调用后端,该解决方案将无法工作。所有存储都会侦听所有事件,以便您可以使用操作中的同一事件触发多个存储更新。这将是一个单一的调度,所以你不会得到错误。谢谢我理解你的答案知道的第一部分。但对于第二部分,若像本例中的“文档容器”这样的容器将所有数据作为道具传递到页面,然后是帧,然后是图像。在图像存储值更改之后,只有“文档容器”组件应该侦听图像存储更改吗?或者我可以让子组件拥有自己的容器组件,这些组件监听各自的存储并使用道具更新其中包含的视图。理想情况下,是的,只有容器应该连接到存储。您可以选择使用多个容器,但请记住,容器的设计理念是,它们不应该从父母那里获得任何道具。因此,仅在子组件在逻辑上与其父组件不同的连接处使用容器。
{
"document": {

   "other properties" : ...
   "page": {

      "other properties" : ...
      "frame": {

         "other properties" : ...
         "image": {}
      }
    }
  }
}