reactjs - 无法使用 REACTJS 读取未定义的属性 'map'

标签 reactjs

我是reactjs新手。

这就是我正在尝试的

class EventDemo extends Component {
    constructor(){
        super()
        this.getStarWars()
        this.state = {}
    }

    getStarWars = ()=> axios.get('https://swapi.co/api/people')
        .then(res => {
            console.log(res.data)
            this.setState({
                names: res.data.results
            })

        })
    
    
    
    render() {
        console.log(this.state.names);
        
        return (
            <div>
                {this.state.names.map(function(e){
                    return <li>{e.name}</li>
                })}
            </div>
        );
    }
}

但是我收到以下错误

error

我在这里做错了什么?它应该可以工作。

最佳答案

首先,你不应该在构造函数中调用 this.getStarWars() 函数,这是一个非常糟糕的做法,可能会给你带来麻烦,React 组件中的 http 调用通常应该从 componentDidMount 函数中调用。

但是,这种情况下的问题是另一个问题,您没有为 this.state.names 提供初始值,因此当组件尝试进行初始渲染时,它会失败,因为自初始渲染开始以来名称未定义在http调用解决之前

您的代码应该像这样修复:

class EventDemo extends Component {
    constructor(){
        super()
        this.state = { names:[] }
    }

   componentDidMount(){
      this.getStarWars()
   }


    getStarWars = ()=> axios.get('https://swapi.co/api/people')
        .then(res => {
            console.log(res.data)
            this.setState({
                names: res.data.results
            })

        })



    render() {
        console.log(this.state.names);

        return (
            <div>
                {this.state.names.map(function(e){
                    return <li>{e.name}</li>
                })}
            </div>
        );
    }
}

关于reactjs - 无法使用 REACTJS 读取未定义的属性 'map',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49543558/

相关文章:

javascript - 如何正确地将函数与组件中的参数绑定(bind)?

reactjs - 如何从 Vercel 上部署的 Next.js (CRA) 应用程序的浏览器中删除源代码?

javascript - 为什么在这种情况下我需要 componentWillReceiveProps?

javascript - 在显示将来可能会更改的选择选项列表时,我应该在 UI 中对它们进行硬编码还是从我的数据库中获取?

javascript - 在 react 状态下使用复杂对象不好吗?

javascript - 直接在 URL 中过滤 API 响应

javascript - 为什么我的输入值不随 React 更新?

javascript - 在 React 中单击错误按钮时提交表单

javascript - 错误: 'Objects are not valid as a React child' in a very simple redux app

reactjs - 在 mobx 存储中更改状态时 Ant-Design Table 不呈现