我正在实现一个基于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表中受影响的行的标准/首选方法是什么?
答案 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有一些基本的例子。