当前位置: 首页 > 知识库问答 >
问题:

如何修复React中的“类型错误:当试图访问对象的属性时,无法读取未定义的属性'name'”

白云
2023-03-14

在使用fetch调用中的promise更新组件的状态后,我无法访问对象的属性。当我console.log对象时,我看到它,但当我试图访问属性时,它抛出一个类型错误:不能读取未定义的属性'name'。我尝试了console.log(object.keys(filteredstudents[0])),得到:typeError:不能将undefined或null转换为object类App extends react.component{constructor(prop){super(prop)this.state={searchfield:'',students:[],menu:'home'}}

  componentDidMount() {

 fetch('https://jsonplaceholder.typicode.com/users')
 .then(response => {
        return response.json()
    }).then(data => {
        // console.log(data);
        this.setState({students: data})
    }).catch(err => console.log('error', err))
  }

  render (){
```````````````````````````````````````````````````````````
    const filteredStudents = this.state.students
    console.log(filteredStudents[0])
    console.log(Object.keys(filteredStudents[0]))
 ````````````````````````````````````````````````````````
      );
    }

    }
  }

I expect the output to return the value of any key I try to 
 access. e.g 
console.log(filteredStudents[0].name) -----> 'leanne'

共有1个答案

陈朗
2023-03-14

您正在尝试在promise有机会解析和状态更新之前访问fiteredStudents数组中的项。如果您将逻辑包装在条件的内部,即。

if(filteredStudents.length) {
    console.log(filteredStudents[0])
    console.log(Object.keys(filteredStudents[0]))
}

那就该管用了。

 类似资料:
  • 这是我的功能。显示解析错误(data.ops[0])

  • 我的代码: 错误: 未处理PromisejectionWarning:TypeError:无法读取未定义的未处理PromisejectionWarning:未处理的promise拒绝的属性“forEach”。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。(拒绝id:1)(节点:7188)[DEP0018]弃用警告:未处理的promise

  • 我正在尝试将我的react表单上载到状态,以便获取具有这些凭据的API 我尝试创建一个如下所示的函数:

  • 我试图使一个对话框弹出每当我得到一个错误从myerrorhandler我可以看到调用,但不是 这是我的错误消息。 错误类型错误:无法读取未定义的属性'openDialogTEST' 奇怪的是,如果我用按钮调用它,一切都很好。这是我的课程: usertable.component.ts auth.service.ts myerrorHandle.ts 对话框.component.ts 完整错误消息:

  • 我正在学习Mosh Hamedani的教程“角度4:初学者到专业”。 当我试图编辑一个产品时,我试图在一个表单中显示它的标题。该产品存储在firebase数据库中。我是新来的Angular。 但是,当我转到编辑表单时,控制台中会出现此错误 这是我表格的一部分: 这是产品表单.组件.ts 怎么做才能显示产品的标题?

  • 请注意,我在react ProductScreen.js中呈现动态数据时有问题 注意,...数据在product.js中呈现得很好,但相同的数据在productscreen.js中不会呈现,因为productscreen.js链接是通过“id”呈现的。 谢谢app.js 导入“./homescreen.css”;从'../Components/Product'导入产品从'React'导入{useE