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

时间:2018-03-15 13:41:11

标签: javascript reactjs react-native

我的属性isLoading是一个布尔状态,我检查以确定我的渲染代码的主体是否已准备好执行或应该等待旋转加载器。当我在调试器中检查状态时,isLoading是一个布尔值,但是当我进一步检查isLoading时,它是未定义的。这是在同一个断点之内(除了移动我的鼠标悬停在1秒钟以外的不同属性上之外,我什么都没做)。这实际上搞乱了我的代码,因为isLoading属性在我的if语句正下方未定义,因此它不会等待我的代码准备就绪。任何人都可以告诉我为什么我的isLoading属性将是未定义的,即使我看状态它是一个布尔??

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

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

enter image description here

enter image description here

enter image description here

4 个答案:

答案 0 :(得分:1)

isLoading实际上并不存在,你可能会这样:

if (this.state.isLoading)

但您也可以通过

进行对象解构
const {isLoading} = this.state

然后:

if(isLoading)

答案 1 :(得分:1)

问题在于您的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}/>);
    }

答案 2 :(得分:0)

以这种方式使用const {isLoading} = this.state 那样你的put isLoading of isLoading in cont variable wich is undefined

答案 3 :(得分:0)

> const {isLoading} = this.state;

这应该是语法。以上称为解构,并在ES6中引入。在上面的语法中,变量从组件的状态赋值为isLoading。

您要做的是在this.state.isLoading内搜索另一个isLoading。