通量:顶层视图不应该是“;转储”;(不要从存储中获取数据)

Flux: should not-top-level views be "dump" (do not fetch data from stores)

本文关键字:存储 数据 获取 转储 视图 不应该 通量      更新时间:2023-09-26

也许在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通过应用程序传递的指导。