是否在控制器视图中保存从Store检索的数据?

时间:2015-01-26 11:56:55

标签: reactjs reactjs-flux

根据React文档,状态应仅用于UI状态,因此从Store检索的数据是否为UI状态会让人感到困惑。

假设我们从商店获得了一个项目列表,需要将其呈现给组件。 应该是:

  1. 存储为州
  2. 存储在组件的属性中(需要forceUpdate
  3. 我还可以考虑在render方法中从Store检索数据,这不需要在组件中保留数据,但仍然需要在Store更改时调用forceUpdate

1 个答案:

答案 0 :(得分:0)

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

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