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