2016-10-03 64 views
0

这是数天或数周可能(阅读文章,观看视频/会谈),我试图了解如何正确使用终极版和redux-form但它确实对我来说很难完全掌握的概念。也许我的用例不适合Redux,或者我只是错过了明显的东西。如何使redux-form(或Redux)在本地数据库中工作良好?

我试图寻找是一个大的应用提供了良好的基础。我对React很有信心,但是Redux(并且因此,还原形式)对于我没有的问题似乎是一个很好的解决方案。尽管如此,大家都赞赏Redux(或flux)的概念,所以我想确保我不会错过任何东西。

好,应用在很大程度上数据库驱动在浏览器(这是一个离线首次应用)一应俱全的所有数据。

我使用的浏览器数据库非常相似NeDB加上Mongoose般的ODM,但实际上该数据库是,我想开源,一旦它足够稳定(另)一个自定义的项目(我确实有实现它已经和它的作品非常好为止)。

该数据库(有关这个问题)的关键点可能是它有在浏览器中随时可用的所有数据,它支持“现场查询” - 这意味着我可以订阅对数据库的更改和最新的查询结果直接推送到任何消费组件/处理程序。此外,数据库会自动同步在后台服务器(双向)的所有数据,这意味着集合可以在任何时刻改变内容。

由于我使用的是Material UI UI前端。

应用程序本身将管理许多不同的集合,我需要为用户实现许多表单,以便他可以编辑某些集合中的单个文档。根据应用程序中的上下文,用户将看到当前集合中所有文档的列表,以及显示该列表中当前选定文档的详细信息的表单。该表格当然也会允许更改文件。用户可能一次只能编辑(查看)一个集合/表单。

为了便于理解,阅读快速MockupUI sketch

左边的列表是可笑容易做反应,上述的现场查询。它也是“被动的”,因为它总是与数据库同步。但是,它目前不使用Redux。我不确定这是否不好。

单击该列表中的任何项目时,细节应显示在右侧的表单中。

我喜欢redux-form(v6)概念,但我无法弄清楚如何将文档数据提供给表单。我知道有initialValues,但我不明白如何正确使用它。

我想我需要将文档数据以某种方式推入Redux,以便它反映在窗体中。我是否需要“启动”Redux操作将数据推送到商店?

另一方面,使用经典的React 状态将列表中的文档(一个简单的JS对象)传递给我的表单组件似乎对我而言非常简单。 目前我没有看到在Redux商店中拥有全局表单状态的好处。但是,我可能需要比redux-form更多的东西(找不到任何可比的东西)。

Redux与我的数据库似乎也是多余的,因为最终都是全球数据存储。

对什么都没有做数据库内容,如应用状态指示灯和切换全球drawer少数国家做使用终极版了。我也使用redux-router(并且最终想链接当前列表选择一个唯一的URI)。然而,我很难找到Redux与数据库/数据库相关组件之间的泛音链接。

所以,我的问题到底是:什么是合理的方式来实现应用程序的这些部分? Redux或不Redux?无论哪种情况:它如何实施?

回答

0

如果您的所有数据在本地可以或多或少同步获得,Redux可能不适合您的应用程序。但是,如果您想使用Redux Form,它提供了很多表单状态管理,即使您仅将它用于Redux Form reducer,也需要使用Redux。

要初始化表单,您可以将值通过initialValues支持传递给装饰表单组件,或者您也可以自己调用dispatch(initialize(formName, formValues))

+0

说什么......我之前尝试过'initialValues',但失败了。我想我在学习太多之后“没有看到树林的木头”,并犯了一些愚蠢的错误。无论如何,我再次尝试,它像一个魅力。真棒! :-) –

相关问题