更新列表中行的显示

时间:2015-11-22 14:54:08

标签: reactjs flux refluxjs

我正在实现一个基于React-Reflux架构的应用程序,它显示页面中的行列表。列表中的每一行都允许内联编辑属性。行中的保存按钮调用回流操作,将数据更新到服务器。

所以,对于前进流程,这看起来很好

print

现在,用于刷新视图

rows/row/savebtn => reflux-action => reflux-store => server

我看到两个选项:

server => reflux-store => trigger => where???

问题是,谁应该听商店活动?它应该是行组件还是更新的单个行。

我很想使用"行"作为动作响应倾听者,但我担心的是"行"应该获取整个页面数据,以便它可以呈现。这意味着,我需要进行ajax调用以从服务器获取所有行,以便我的显示保持同步?

另一方面,如果我做"行"作为行动倾听者,我是否打破了“单一真理来源”的原则。从行到行。此外,行组件没有状态,因为它从其父/所有者那里得到它的行

server => reflux-store => trigger (list of rows) => rows
server => reflux-store => trigger (row changed) => row

通过发送行数据创建记录行,该行数据在子组件中显示为/** * creates a HTML table to show requirements **/ var ReqTable = React.createClass({ render: function() { var rows = []; rows = this.props.data.map(function(row) { return ( <ReqRow key={row.id} row={row} />); }); return (<div>{rows}</div>); } });

更新rows表中受影响的行的标准/首选方法是什么?

1 个答案:

答案 0 :(得分:0)

store事件侦听器应位于子级共享数据的最高父组件中。商店将是唯一的行动倾听者。 我组织它的方式是入口点是app.js,它需要app.ctrl,api.store和actions。多页面应用程序的app.ctrl将与app.store连接,该app.store将包含应用程序状态(例如哪个页面处于活动状态)。 app.ctrl也需要所有的page.ctrls,并且会传递app.state以及显示/隐藏道具到页面。 page.ctrl通常会连接到与这些页面所需的数据相关的存储。 https://github.com/calitek/ReactPatterns有一些基本的例子。