我们有一个dillema。
某些数据通过模板到达我们的初始index.html
页面。
我们把它放在window
上,并希望将它放在商店里。
现在,我们有这样的事情(伪造):
class App ... {
componentDidMount() {
this.props.setLoggedInUser(this.props.user);
// setLoggedInUser is a dispatch prop
}
}
<App user={window.user} />
选项二是仅使用初始状态:
createStore(reducer, { user: window.user }, ...)
我们进行了长时间的讨论,如果initialState
是反模式,我们无法达成一致。
实现此类数据加载的正确方法是什么?
答案 0 :(得分:1)
我认为initialState不适用于此类用途。我可能会在reducer中初始化它:
userReducer(state=window.user, action) ...
但是假设window.user是常量。如果它是浮动的东西,那么我可能会调度方式,但不是componentDidMount
,而是紧跟在createStore
答案 1 :(得分:1)
根据documentation(参见#2),首选方法是在从引导数据创建商店时使用initialState。
以这种方式引导数据时,您永远不会处于等待商店应用调度操作的状态。另一个好处是,您不会发送与UI中发生的事情无关的动作。