在Redux reducer中转换数据

时间:2016-01-25 12:41:08

标签: reactjs redux reducers

好像我在想错误的方向..我有一个使用redux的反应应用程序。现在我有一个从服务器获取数据的reducer。对于一个组件,我需要转换数据,我想在reducer中做。

但是,如果我转换数据,它会为所有订阅者转换不是吗? 那么是否可以动态地在reducer中转换数据,但是不能将转换后的数据保存在状态中? (这听起来像是转储问题..)

1 个答案:

答案 0 :(得分:2)

组件通常需要可以从存储状态派生的特殊数据,但不存储状态。正如一条评论所暗示的那样,您可以编写一个执行转换的函数,并从组件中调用它。这些函数有时被称为“选择器”,因为它们选择并转换部分状态。但是,这可能会导致问题,因为每次状态更改时都会重新计算该值,并且由于它的派生数据,所有依赖于它的内容都将被重新呈现。

有一个redux扩展库,通过允许您有效地声明选择器所依赖的状态的精确部分,提供了解决此问题的方法。这意味着只有在这些部件发生变化时才会重新计算,避免每次重新渲染问题。看到: http://rackt.org/redux/docs/recipes/ComputingDerivedData.htmlhttps://github.com/rackt/reselect

您可以选择完全封装您的商店状态,并让组件只能通过选择器访问该状态。这具有通常的封装和相关的好处(例如,将组件与某些重构因素隔离到商店状态)。