【发布时间】:2016-09-01 05:53:08
【问题描述】:
我创建了一个应用程序,它使用通量模式并从 API 中提取数据。 这是更新数据现在的工作方式:
- 组件调用
get()动作 - 该操作从 API 中提取数据
- 该操作将 storechange 事件分派到包含新数据的相关存储
- 商店使用从操作接收到的有效负载更新其状态并发出 viewchange 事件
- 组件监听 viewchange 事件,从 store 中拉取新项目并重新渲染
到目前为止一切正常。但现在我想知道我将如何进行过滤。例如。对于特定组件(“通知”),我只想返回未读通知或给定时间段内的通知。
当我执行一个动作getByStatus(status)getByDate(start, end)时,整个商店只会包含未读通知或时间段内的通知,当您想同时显示所有通知和未读通知时,这是一个问题。
这是使用 javascript / lodash 或类似方法创建过滤器方法的唯一方法吗?这将使服务器端的任何过滤都过时,并导致大量(不需要的)流量。
并且创建像“UnreadNotificationStore”这样的单独存储将非常难以处理,并且在时间段的情况下问题仍然存在。
我能想到的唯一方法是在不更新存储的情况下添加getByStatus(status) 操作,并将数据直接返回给组件。
【问题讨论】:
-
你试过
.filter函数吗?喜欢this.getState().filter( element => element.color !== "blue") -
遇到和你一样的问题,还在寻找解决办法。澄清一下:过滤发生在服务器端,这意味着当服务器返回过滤后的数据时,该数据将在存储中存在,这就是问题是。
标签: javascript reactjs filtering flux reactjs-flux