我有一个名为changeLoadingStatus的函数,并且正在使用它从后端获取数据。提取完成后,我将loadingStatus更改为false,并且希望将数据呈现到屏幕上。但这会导致无限循环。我不明白为什么。
Dashboard.js
class Dashboard extends Component {
componentWillMount() {
this.props.setLoadingStatus(true)
if (condition1) {
this.props.onFetchDataTypes()
}
if (condition2) {
this.props.onFetchSts();
}
if (condition3) {
this.props.onFetchSystems();
}
}
render() {
let dashboardPage = (
<div>
<label>xxx</label>
</div>
);
if (this.props.loadingStatus) {
dashboardPage = <Spinner />
}
return dashboardPage;
}
}
const mapStateToProps = state => {
return {
loadingStatus: state.loadingStatus
}
}
const mapDispatchToProps = dispatch => {
return {
onFetchDataTypes: () => dispatch(actions.fetchDataTypes()),
onFetchSts: () => dispatch(actions.fetchServiceTypes()),
onFetchSystems: () => dispatch(actions.fetchSystems()),
setLoadingStatus: (status) => dispatch(actions.changeLoading(status))
};
}
export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Dashboard));
例如,在“ onFetchDataTypes”函数中,在axios成功响应上,我将loadingStatus redux状态设置为false,但这会导致无限循环。如果我未将其设置为false,则不会有无限循环,但当然,加载微调框始终在其中