如何使用redux在顶级反应组件中设置初始状态?

时间:2016-03-30 19:50:07

标签: reactjs redux

我想要这样的事情:

MyMainComponent = React.createClass({
  getInitialState()=>{
    let state = store.getState();
    return Object.assign([], state, initialDataset: this.props.initialDataset)
  }
})

以及代码中的其他地方:

let store = createStore(reducers, {
  foo: "default"
  initialDataset: []
})

export const MyApp = ({ initialDataset }) => (
  <Provider store={store}>
    <MyMainComponent initialDataset={initialDataset}  />
  </Provider>
)

我还没有找到任何接近这个的例子。我不确定它是否可能。

编辑:我想补充一点MyApp在一个带有initialDataset实例化服务器端的ruby帮助器中调用。

1 个答案:

答案 0 :(得分:1)

由于azium突出显示,将redux商店的状态复制到您的顶级组件状态似乎没有必要。

如果您的问题是使用store客户端实例化initialDataset,则可以在HTML中使用全局变量添加script标记:

// assuming you are in a erb template
<script>window.__INITIAL_STATE__ = <%= JSON.generate(initial_dataset) %></script>

然后在您的资产中,您可以像这样使用它:

let store = createStore(reducers, {
  foo: "default"
  initialDataset: window.__INITIAL_STATE__ || []
});

您可以在redux文档中找到相关示例:http://redux.js.org/docs/recipes/ServerRendering.html

希望有所帮助