Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 是否将从存储中检索的数据保留在控制器视图中?_Reactjs_Reactjs Flux - Fatal编程技术网

Reactjs 是否将从存储中检索的数据保留在控制器视图中?

Reactjs 是否将从存储中检索的数据保留在控制器视图中?,reactjs,reactjs-flux,Reactjs,Reactjs Flux,根据React文档,状态应该只用于UI状态,因此从存储中检索到的数据是否为UI状态很容易混淆 假设我们从存储中获得了一个项目列表,需要将其呈现给组件。 如果是: 存储为状态 存储在组件属性中需要forceUpdate 我还可以考虑使用render方法从存储中检索数据,这根本不需要将数据保留在组件中,但仍然需要在存储更改时调用forceUpdate。使用Flux架构时,流是单向的,这最终意味着视图永远不会直接更新存储。存储区为您的视图提供状态。如果您试图从视图中添加、删除、更新或删除数据,则会触发

根据React文档,状态应该只用于UI状态,因此从存储中检索到的数据是否为UI状态很容易混淆

假设我们从存储中获得了一个项目列表,需要将其呈现给组件。 如果是:

存储为状态 存储在组件属性中需要forceUpdate
我还可以考虑使用render方法从存储中检索数据,这根本不需要将数据保留在组件中,但仍然需要在存储更改时调用forceUpdate。

使用Flux架构时,流是单向的,这最终意味着视图永远不会直接更新存储。存储区为您的视图提供状态。如果您试图从视图中添加、删除、更新或删除数据,则会触发一个动作,该动作将被发送到存储区。然后,您的存储将接收被调度的数据,对该数据执行某些操作并发出“更改”事件。所有订阅商店的视图都将得到相应更新的通知。例如,这是一个视图

var Events = React.createClass({
  getInitialState: function() {
    this.store = this.props.context.getStore('EventStore');
    return this.store.getState();
  },

  componentDidMount: function() {
    this.store.addChangeListener(this._setState);
  },

  componentWillUnmount: function () {
    this.store.removeListener('change', this._setState);
  },

  _setState: function () {
    this.setState(this.store.getState());
  }
});

您可以按照本教程更好地理解,但使用FLUX这样的体系结构的关键和直接好处是单向流。

这不是FLUX如何工作的问题,而是如何有效地处理从存储中检索到的数据。这正是我在这里要向您展示的。在组件装载时获取您的状态,并在存储发出更改事件时再次检索它?从存储中检索数据的有效方法到底是什么意思?在使用stores和React组件时,不必以任何其他方式检索它。这让我很困惑,为什么要在render方法中从存储中检索状态。当您调用setState时,组件将自动重新渲染。这里的情况是不要将应用程序数据保持在组件的状态内,而是立即渲染它。状态表示UI,但不表示应用程序数据。最佳实践是尽可能少地将数据保存在状态中,这对性能起到了很好的作用。