根据React文档,状态应仅用于UI状态,因此从Store检索的数据是否为UI状态会让人感到困惑。
假设我们从商店获得了一个项目列表,需要将其呈现给组件。 应该是:
forceUpdate
)我还可以考虑在render
方法中从Store检索数据,这不需要在组件中保留数据,但仍然需要在Store更改时调用forceUpdate
。
答案 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这样的架构的关键和直接好处是单向流。