Javascript Flux:如何处理生成其他依赖对象的对象
上下文:我们正在使用React/Alt.js构建一个复杂的3D“模拟人生”web应用程序。用户可以在3D场景中添加简单对象(立方体),但更常见的情况是,他们会添加我们称之为“预制体”的东西,这是基于某些用户参数(长度、高度等)的几个简单对象(15个立方体构成一个结构)的组合 因此,我们有一个ObjectStore,包含所有简单对象和PrefactStore(只保存用户的参数以生成预置) 我们只能在React层中生成这个预置及其对象(这样预置渲染总是与存储中预置的参数同步),但出于技术原因,我们需要所有这些预置的简单对象真正存在于存储层中。换句话说,我们需要在存储中生成预置的对象(ObjectStore,因为它是存储简单对象的地方) 问题是:在哪里(存储层中),何时以及如何生成预制件及其所有从属对象,以及我们应该在哪里存储生成的对象,知道:Javascript Flux:如何处理生成其他依赖对象的对象,javascript,reactjs,flux,Javascript,Reactjs,Flux,上下文:我们正在使用React/Alt.js构建一个复杂的3D“模拟人生”web应用程序。用户可以在3D场景中添加简单对象(立方体),但更常见的情况是,他们会添加我们称之为“预制体”的东西,这是基于某些用户参数(长度、高度等)的几个简单对象(15个立方体构成一个结构)的组合 因此,我们有一个ObjectStore,包含所有简单对象和PrefactStore(只保存用户的参数以生成预置) 我们只能在React层中生成这个预置及其对象(这样预置渲染总是与存储中预置的参数同步),但出于技术原因,我们需
缺点:我不知道如何在两个不同的存储中处理记忆:预制对象的预制存储(仍然具有位置/旋转属性)和生成对象的对象存储 回答这类体系结构问题很难——你是自己系统和领域的专家,但不管怎样: 基本的流量规则是,存储负责改变自己的状态以响应某个操作。此外,还有良好的通用代码组织实践,例如具有低耦合和高内聚性等 一种选择是:
通过这种方法,您可以独立地对预制模型和对象生成进行单元测试,并在您想要的地方轻松地重用它。存储代码也是相当简单的胶水,易于测试。UI不需要担心渲染部分中的预置。我不确定flux的实现,但如果您使用Redux(即使您没有),这是一种有效处理计算数据的常见模式(特别是在回答第3点)。只要需要对象的引用,就可以
导入
选择器。这使您的状态保持简单并优化了计算。谢谢您的回答。实际上,我现在正在使用这个选项(好吧,几乎相同,请参阅我的原始帖子中的解决方案2):我有一个预制模型,它生成所有依赖对象,然后所有依赖存储(ObjectStore)侦听“预制生成的”动作,获取生成的对象并将它们放在自己的存储中。我对这个解决方案不满意,因为当我更新预置(参数、位置等)时,我需要更新所有依赖对象(完全移动/调整大小/删除),也就是重新生成预置。如何确保对象始终与预置参数同步?一个选项是