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

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


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

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


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


  未捕获(承诺中)TypeError:无法读取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 - React.js,无法读取null的属性“教训”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50028801/

10-09 23:41