场景通量不支持
Posted
技术标签:
【中文标题】场景通量不支持【英文标题】:a scenario flux doesn't support 【发布时间】:2015-06-23 00:38:38 【问题描述】:我在 React 中使用 Flux 架构,但遇到一个不知道如何处理的问题。
我需要编写一个逻辑来侦听分派的操作(如存储),并在有效负载包含特定值的情况下触发操作。
例如,假设有一个调度“ITEM_CREATED”的操作。我的组件应捕获此“ITEM_CREATED”事件及其有效负载,并检查有效负载是否包含正确的序列号。如果序列号不正确,我的组件应该执行一个动作。
在商店中实现此逻辑将导致异步商店,此外,我无法从商店触发操作。
一个可能的解决方案是创建一个“虚拟”组件(使用虚假的 render() 方法)来执行该逻辑。这样的解决方案将迫使我将这个虚拟组件放在我的 JSX 标记中,这看起来像是一个 hack 或一个糟糕的解决方法。
我真的很想知道这种情况下的助焊剂解决方案是什么。
谢谢
【问题讨论】:
#1) 也许 Flux 不是最佳选择? #2)你提到的“有效载荷”在哪里获取?我不明白您所说的“收听已调度的操作(如商店)”是什么意思?如果您编辑问题以包含更多详细信息(某些细节),则提供帮助可能会更容易。 @WiredPrairie 我更新了问题并添加了一个示例。您建议哪种替代方案? 你能让动作创建者做异步工作并发送正确的消息吗? @WiredPrairie 仅当条件为真时才需要执行异步工作。这种情况取决于商店中存在的数据。据我了解flux,action无法访问store。这就是为什么我不能采纳你的建议。 不能调用动作创建者的任何代码进行检查或传递必要的数据以便进行检查吗? (或者决定该操作可以查询商店)。 【参考方案1】:这里的答案是备份并响应原始操作执行所有操作,而不是创建级联操作。
另见:
Flux Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch
Dispatching further actions when handling actions
https://github.com/facebook/flux/issues/133#issuecomment-70775063
【讨论】:
为了备份并响应原始操作,我必须从存储中获取一个值。需要此值才能知道是否执行此附加操作,据我所知,操作无法从存储中询问数据。 在 StoreB 中,您将使用调度程序的 waitFor() 来确保 StoreA 已首先更新。然后使用 StoreA 的 getter 之一来检索该值。那你就知道在StoreB做什么了。以上是关于场景通量不支持的主要内容,如果未能解决你的问题,请参考以下文章
MTIP MP92 Test 1 场景1 - Card 表示不支持Contactless