我的属性isLoading是一个布尔型状态,我检查该状态以确定渲染代码的主体是否已准备好执行或应与正在旋转的加载程序一起等待。当我在调试器中检查状态时,isLoading是一个布尔值,但是当我进一步检查isLoading时,它是未定义的。而且这是在同一断点之内(除了将鼠标悬停在1秒之外的其他属性上,我什么也没做)。这真的搞砸了我的代码,因为isLoading属性随后在其下面的if语句中是未定义的,因此它不会等待我的代码准备就绪。谁能告诉我为什么我的isLoading属性是不确定的,即使当我查看状态为布尔值时也是如此?

    render() {
    const {isLoading} = this.state.isLoading;

    if (isLoading) {
        return (<Loader isVisible={true}/>);
    }


javascript - 为什么我的属性在React中的状态上未定义?-LMLPHP

javascript - 为什么我的属性在React中的状态上未定义?-LMLPHP

javascript - 为什么我的属性在React中的状态上未定义?-LMLPHP

最佳答案

问题出在您的const {isLoading} = this.state.isLoading;

它必须是const {isLoading} = this.state;

因为根据您的代码,const {isLoading} = this.state.isLoading;表示this.state.isLoading.isLoading希望返回一个未定义的值

这应该工作正常

 render() {
    const {isLoading} = this.state;

    if (isLoading) {
        return (<Loader isVisible={true}/>);
    }

10-06 02:28