如何在 React App 中显示微调器?

How can I display a spinner in a React App?

我有一个 React 应用程序,我想在处理需要一些时间才能完成时显示一个微调器,例如 API 请求,甚至是冗长的状态设置。我试过回调,例如:

                this.setState({
                    showSpinner: true,
                }, () =>
                    this.APIgiveMeTheWorld().then(
                        this.setState({
                            showSpinner: false,
                        })
                    ));

和异步函数:

                await this.setState({
                    showSpinner: true,
                });
                this.APIgiveMeTheWorld().then(
                    await this.setState({
                        showSpinner: false,
                    })
                );

但在任何明显的点上,状态显示 showSpinner 为真(因此我的微调器从未出现)。实现这种功能的最佳方式是什么。

只要 showSpinner 状态为 false 就显示 Spinner,当它变为 false 时隐藏它

{ !showSpinner? <SpinnerComponent /> : <ResultShower /> }

并且在您的组件中,您可以从 componentWillMount 生命周期中的 API 加载数据,当加载完成并且您从 API 的调用中返回数据时可以将 showSpinner 状态更新为 false,这将自动隐藏 SpinnerComponent 并显示您想要显示的任何其他内容。

componentWillMount() {
    loadData().then((data) => {

        // Here I consider get data from from you API request

        this.setState({
           data,
           showSpinner: false
        });
    })
}

我看到你在回调中传递了 setState 的结果 then。你试过了吗:

this.setState({
    showSpinner: true,
}, () =>
    //should pass a call back function to call right after api return.
    this.APIgiveMeTheWorld().then(r => {
        this.setState({
            showSpinner: false,
        })
    }));

问题出在我的 API 函数即时解析上。