通量:顶层视图不应该是“;转储”;(不要从存储中获取数据)
Flux: should not-top-level views be "dump" (do not fetch data from stores)
也许在flux官方网站上我看到一段视频,导师说了一些类似的话:
只有顶级React视图才应该了解商店。所有非顶级视图应该被转储,并作为属性接收所有信息。
问题: 是这样吗?你的论证,请
但是,假设您有一些在多个页面上重复使用的小React视图Button.react
。并且假设Button.react
必须知道一些存储数据。如果我们不直接从Button.react
获取所有数据,那么我们会在每个重用Button.react
的顶级组件上获得重复的代码你可以吗
我希望我能理解你的问题。
React的一个特点是它的单向数据流。每个组件都可以被另一个组件使用,就像一个函数可以调用另一个函数一样。就像一个函数一样,React组件通常应该能够从传递给它的参数中获得完成工作(呈现自己)所需的所有信息。这就是React中props的功能。当使用Flux时,有时React组件(通常位于视图层次结构的顶部)实际上从存储中获取数据并向下传递到应用程序,称为控制器视图。
每个组件都不能成为控制器视图,直接从存储中获取自己的状态,这不是一条可执行的规则,但这是一种有充分理由的通用做法。考虑两个功能:
function renderToggleButton( isSelected ){
//... render the button
}
与
function renderToggleButton(){
var isSelected = StateStore.getButtonSelectedState( id );
//... render the button
}
我想你会同意第二个函数更复杂,更难测试。它必须从哪里知道它的初始条件。它还必须知道如何在应用程序的上下文中识别自己。这是函数不必知道的两件事。
现在想象一下,一个应用程序充满了这样的功能。如果一个函数行为不端,则很难跟踪其输入;在受控条件下进行测试。我希望这能澄清将数据作为props
通过应用程序传递的指导。
相关文章:
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何以特定格式存储数据?在WYSWYG中
- web浏览器中的离线应用程序存储数据并在之后上传
- 在firebase(web)上存储数据时出现问题
- 使用会话Javascript存储数据
- 通过CK编辑器获取值和存储数据
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 如何在网页之间存储数据
- jQuery 设置和获取下拉列表和输入的本地存储数据
- 如何通过HTML 5 javascript在本地ipad / iPhone上存储数据,并在设备上线时提交
- 使用 Cookie 存储数据
- 如何将本地存储数据提交到 Django
- 如何在循环jQuery中的数组中存储数据
- 正在从表行中删除本地存储数据
- 在web应用程序中存储数据
- 自动将jqgrid滚动到具有存储数据的单元格的当前日期列和闪烁效果
- 如何将复选框呈现为从本地存储数据中选中的复选框
- 如何使用Ajax检索和存储数据
- 方法存储数据,直到浏览器关闭
- 如何在redux sagas完成之前通过meta标签加载初始存储数据