在Redux中获取初始状态

时间:2018-02-21 16:36:35

标签: reactjs redux react-redux

我正在构建一个应用程序,我需要在主要组件安装之前从服务器获取初始redux状态。 在我的行动中,我使用redux-thunk来获取必要的数据:

export const getInitialStateSuccess = (state: any): IfetchThemeSuccess => {
    console.log('state', state);
    return {
        type: FETCH_INIT_STATE,
        state
    };
};


// here I fetch the data from the server and call getInitialStateSuccess
// to pass it to redux init state
export const getInitialState = () => {
     return (dispatch: any) => {
         api.getInitState().then((data) => {
              dispatch(getInitialStateSuccess(data));
          });
      };
 }

但是,我不知道应该在哪里调用getInitialState()。我需要在主要组件安装之前初始化应用程序的状态。你认为在componentWillMount中调用这个动作是一个好习惯吗?它必须只被调用一次。 如果我上面描述的方法是一个好的做法,请告诉我。 谢谢!

3 个答案:

答案 0 :(得分:1)

您可以在import os os.chdir('C:\\...\\MongoDB\\Server\\3.6\\bin') os.system('mongodump -h ip -d database name -o C:\\Users\\...\\Desktop\\BackUpMongo') print("Copia de seguridad finalizada") 中调用它,但首选WillMount。这是因为如果你有服务器端渲染,DidMount可以被调用两次。

无论哪种方式,你都需要一个中间的“加载”屏幕,因为调用是异步的,它将在数据加载之前呈现。

答案 1 :(得分:1)

放置API或服务器调用的最佳位置是componentDidMount()生命周期。

请注意,一旦数据覆盖初始状态,这将触发重新渲染。

这将强制您在componentDidMount()生命周期之前管理初始状态。通常的做法是在构造函数方法中执行此操作。

您可以在此处的React文档中自行查看:https://reactjs.org/docs/react-component.html

装载组件后立即调用

" componentDidMount()。需要DOM节点的初始化应该放在这里。如果需要从远程端点加载数据,这是实例化网络请求的好地方。在此方法中设置状态将触发重新渲染。"

答案 2 :(得分:0)

您的初始状态将存在于减速器中。在您的react组件上,一旦进行了connect编辑,您就可以使用帮助方法mapStateToProps来访问当前状态。