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