【发布时间】:2015-05-11 13:41:27
【问题描述】:
我们最近从 Angular 切换到 React + Flux 来构建一个相当复杂的业务应用程序。
采用一个容器组件将所有状态作为属性传递到组件树的方法对于我们来说开发应用程序并不是一种实用的方法,因为该应用程序使用了类似页面的大模式。确实有足够的状态传递给模态,以便它们将数据加载到存储中。
我遇到的问题是我需要将一些初始状态(作为道具传递)到模态组件的存储中。在this post Facebook 的好人说,当同步不是目标时,可以使用道具作为初始状态。
这就是我目前将初始状态放入商店的方式:
var ABC = React.createClass({
...
getInitialState: function() {
return ABCStore.getInitialABCState(this.props.initialA);
},
...
var ABCStore = Reflux.createStore({
...
init: function() {
_state = {
a: null,
b: 'B init',
c: 'C init'
};
},
getInitialABCState: function(initialA) {
_state.a = initialA;
return _state;
},
getABCState: function() {
return _state;
}
...
我不确定执行此操作的最佳做法是什么,或者这是否是 Flux 反模式?
【问题讨论】:
-
感觉就像你在那个商店的反模式边缘。不过,Flux 的伟大之处在于,它更像是一个架构概念,而不仅仅是一个组件。这意味着您可以通过多种方式创建商店并将其保留在 Flux 精神中。在我从事的一个项目中,我们只使用了 Flux 库中的调度程序,这意味着商店没有像您的示例那样初始化。商店只是在需要数据时填充自己(来自组件或路由器的操作)。我不认为你的例子是不好的做法,但它开启了一个很好的讨论。
-
是的,我希望围绕这个展开一些讨论,因为我也有这种感觉,但我需要更具体的东西:)
标签: javascript reactjs reactjs-flux refluxjs