技术:react-thunk
我有一个基本组件,该组件包装并包含获取基本应用程序数据(数据库中的一些静态数据),因此我不想检查每个组件是否都已获取,然后再获取还是不获取等等。实体之间没有关系,因此我使用了Promise.all([])
,因此以并行方式获取它们并将动作创建者传递给它,以便它可以解决它。同时,在获取所有数据之前,我将显示一个加载栏。我的问题很少发生。
.then()
之后的7-8个页面中,有 1个刷新页面未将数据加载到Promise.all([])
回调中。因此,如果您能指出问题所在和错误所在。
constructor(props) {
super(props);
this.state = {
isLoading: true
};
}
componentDidMount() {
Promise.all([this.props.entities_1(),this.props.entities_2(),this.props.entities_3()])
.then(() => {
console.log('Fetching is finishing'); ---> So this line is executed 1 out 7-8 times before the fetching is finished.
this.setState({ isLoading:false });
});
}
render() {
return (
<div>
{this.state.isLoading && <LoadingBar />}
..... other code
}
</div>
);
}
export function mapDispatchToProps(dispatch) {
return {
entities_1: () => dispatch(entities_1()),
entities_2: () => dispatch(entities_2()),
entities_3: () => dispatch(entities_3())
};
}
这是我的行动创造者,看起来像:
export function entities_1() {
return async dispatch => {
try {
dispatch(REQUEST);
const response = await getSmth();
dispatch(SUCCESS(response));
}
catch (error) {
dispatch(FAILURE(error));
}
};
}