Redux函数调用,导致无限循环

时间:2020-08-04 11:04:54

标签: reactjs react-redux

我有一个名为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,则不会有无限循环,但当然,加载微调框始终在其中

0 个答案:

没有答案