我将ReactJs与Flux一起使用。所以我有观点,行动创造者,调度员和商店。我创建了一个可重复使用的搜索组件,该组件使用了' searchActionCreator' (调用搜索API)。最后,搜索商店'将收到搜索结果,并将发出搜索组件将采取行动以显示搜索结果的事件。
使用此组件的前端开发人员只需设置一些属性来定义要搜索的内容,并传递当用户选择其中一个搜索结果时将调用的方法(委托)。我不想将搜索结果从父组件传递到搜索视图,因为这会使搜索组件重新使用其他东西变得有点复杂。
只要每个浏览器窗口中只有一个搜索组件,Eveything就可以正常工作。由于每个搜索组件都使用searchStore注册事件处理程序,因此当其中一个搜索组件调用搜索API时,将触发每个搜索组件以显示搜索结果。
我可以自己想一些如何防止这种行为的选择。例如。我可以将搜索组件的状态设置为等待'在创建并触发搜索操作之后,直到组件收到结果。只有等待'国家需要处理' resultsReady'来自searchStore的事件。另一种选择是将搜索组件的唯一ID与搜索查询一起传递给搜索动作创建者。搜索商店需要将此ID提供给所有请求搜索组件,以便搜索组件可以将此ID与其自己的唯一ID进行比较。
我无法想象我是遇到这一挑战的唯一一个人,必须有某种标准化的解决方案。我已经在异步请求中阅读了good article,但在本文中也未找到对此问题的答案。任何建议将不胜感激!
答案 0 :(得分:1)
解决方案取决于您使用的Flux实施。我实际上是通过将searchStore实现为支持多个搜索的存储库来解决这个问题,结果由某种独特的组件id字符串索引。然后我创建一个聚合商店(很容易用Reflux)来过滤给定组件id字符串上的searchStore。因此,组件只与汇总存储接口,以保持简单。