在Redux中:如何将数据从初始html存储到商店? initialState或dispatch?

时间:2017-07-11 09:26:06

标签: redux react-redux

我们有一个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是反模式,我们无法达成一致。

实现此类数据加载的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

我认为initialState不适用于此类用途。我可能会在reducer中初始化它:

userReducer(state=window.user, action) ...

但是假设window.user是常量。如果它是浮动的东西,那么我可能会调度方式,但不是componentDidMount,而是紧跟在createStore

之后的一段代码中

答案 1 :(得分:1)

根据documentation(参见#2),首选方法是在从引导数据创建商店时使用initialState。

以这种方式引导数据时,您永远不会处于等待商店应用调度操作的状态。另一个好处是,您不会发送与UI中发生的事情无关的动作。