我正在构建一个应用程序,我需要在主要组件安装之前从服务器获取初始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中调用这个动作是一个好习惯吗?它必须只被调用一次。 如果我上面描述的方法是一个好的做法,请告诉我。 谢谢!
答案 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
来访问当前状态。