0

根据 React 文档,状态应该仅用于 UI 状态,因此从 Store 检索的数据是否是 UI 状态令人困惑。

假设我们从 Store 中获得了一个项目列表,并且需要将它呈现给组件。应该是:

  1. 存储为状态
  2. 存储在组件的属性中(需要forceUpdate

我还可以考虑在方法内从 Store 检索数据render,这根本不需要将数据保留在组件内,但仍然需要forceUpdate在 Store 更改时调用。

4

1 回答 1

0

使用 Flux 架构,流程是单向的,这最终意味着视图永远不会直接更新 store。商店为您的视图提供状态。如果您尝试从视图中添加、删除、更新或删除数据,您将触发一个操作,该操作将被分派到您的商店。然后,您的商店将接收正在发送的数据,对这些数据进行处理并发出“更改”事件。订阅商店的所有视图都将收到相应的更新通知。例如,这是一个视图。

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());
  }
});

您可以按照本教程 ( http://facebook.github.io/flux/docs/todo-list.html ) 获得更好的理解,但是使用像 FLUX 这样的架构的关键和直接好处是单向流。

于 2015-01-26T12:22:48.223 回答