javascript - Reactjs,无法读取 null 的属性 'lessons'

标签 javascript reactjs

在我的代码中,我告诉 API 从 componentDidMount() 内的端点检索数据。

componentDidMount() {
    this.setState({
      lessons: API.getAllLessons()
    })
  }

然后我将列表中的每个项目映射到渲染中的单个面板

render() {
    return (
    this.state.lessons.map((lesson)=>{
        <LessonItem lesson={lesson}/>
    })
    );
  }

但是,当映射时,它会抛出错误,因为它尝试映射的状态下的属性为 null,但不应如此,因为数据是从 API 返回的。

Uncaught (in promise) TypeError: Cannot read property 'lessons' of null

我的状态是这样定义的

export interface AuthenticatedHomeState {
  currentUser: any;
  lessons: any;
}

最佳答案

您可能没有初始化状态。

constructor(props){
  super(props)

  this.state = {
    lessons: [] //default value
  }
}

componentDidMount() {
    this.setState({
      lessons: API.getAllLessons()
    })
}

但是,如果 API.getAllLessons 返回 Promise,您将需要以不同的方式处理它。

关于javascript - Reactjs,无法读取 null 的属性 'lessons',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50028801/

相关文章:

reactjs - 在表单中实现钩子(Hook)的设计模式

reactjs - 我尝试将 Material-UI RaisingButton 链接到外部 url 但没有成功?

javascript - 卸载组件后功能如何存在

javascript - 使用对象正确替换全局变量

java - iPhone iOS7 上的 MGWT 滚动错误无法到达可滚动内容的底部

javascript - jquery slideup 和 bootstrap 的警报(只显示一次)

javascript - 如何在 React Router v6 中将默认路径 '/' 重定向到 '/home'。当前配置不起作用

JavaScript url 404 错误

javascript - Snap.svg 动画 stop() 不会停止动画

reactjs - SVG 以错误的颜色显示