在React Native + Redux app

时间:2016-06-02 22:12:23

标签: javascript reactjs react-native redux

我是React的新手(尤其是React Native),我正在努力想出正确的应用程序设计。

我有一个单独的JavaScript模块,与React无关;该模块包含一些带有方法的对象,其中一些变异对象,一些具有副作用(例如,订阅/取消订阅/来自服务器事件,或添加/删除侦听器到本地对象的事件)等。

我想在我的React Native应用程序中重用这个JavaScript模块,但似乎它不能很好地一起玩。在Redux(以及其他一些状态管理器)中,状态需要表示为普通的不可变JS对象,而不是改变现有对象,而是创建新对象。所以我不能直接使用现有的JS对象作为状态。

我可能会在我现有的JS代码周围使用一些包装器(变异,并且充满副作用),但它似乎并不是一个很好的解决方案:大量重复,最终结果不太可能优雅

另一方面,我不太乐意重新实现整个事物以适应React的世界,使其成为惯用语。

另一方面,我可以忘掉Redux,并使用React组件的简单state,但我觉得它会变得一团糟。

我想从经验丰富的React + Redux人那里得到一些建议。你会推荐什么?

1 个答案:

答案 0 :(得分:0)

如果没有看到神秘模块的作用或曝光,很难说清楚。但是考虑将模块转换为一个或多个Reducer,然后使用Redux的combineReducers来定位将仅包含在您的模块中的整个商店的部分。

然后你需要添加总是按照Redux的要求返回新对象的reducer方法,但是你不需要修改现有代码中的每个函数。

Dan Abramov的

This article帮助我理解了减速器的组成。

另请参阅文档中的Handling Actions以获取有关如何编写仅修改商店的一小部分的良好reducer方法的帮助。