javascript - ReactJS 无法映射数组

标签 javascript reactjs

我是下面的错误。

Uncaught (in promise) TypeError: Cannot read property 'map' of undefined

当尝试执行下面的map函数时,模拟API的链接是http://www.mocky.io/v2/5db88c413b00004f0b35f1f1 :

state = {
        name: 'Teste II', 
        produto: null,
        alternativas: null,
        atributos: null,
        loading_produto: true,
        loading_alternativas: true,
        loading_atributos: true,
        showPopup: false,
    };

    constructor( props ) {
        super( props );     
    }

    async componentDidMount(){
        const url = "http://www.mocky.io/v2/5db88c413b00004f0b35f1f1";
        const response = await fetch(url);
        const data = await response.json();
        this.setState({produto: data.suggestions[0], loading_produto: false})
        this.setState({alternativas: data.choices, loading_alternativas: false})
        this.setState({atributos: data.suggestions[0].attributes, loading_atributos: false})
        console.log(this.state.produto.product_data.title);
    }

render() {

    const lista_alternativas = this.state.alternativas;
    const lista_atributos = this.state.atributos;


        if(!this.state.loading_atributos){

            this.atributos = lista_atributos.map((description, key) => {
                console.log('chegou aqui');

                return  <li key={description.id}>{description.description}</li>
            });
        }

return (

出了什么问题?

最佳答案

检查该 URL 的响应,您正在将状态值“atributos”设置为 data.suggestions[0].attributes(该属性不存在)。

您可能希望将其更改为 data.suggestions[0].product_data.attributes。

更具体地说,将你的 componentDidMount 函数更改为:

async componentDidMount(){
    const url = "http://www.mocky.io/v2/5db88c413b00004f0b35f1f1";
    const response = await fetch(url);
    const data = await response.json();
    this.setState({produto: data.suggestions[0], loading_produto: false})
    this.setState({alternativas: data.choices, loading_alternativas: false})
    this.setState({atributos: data.suggestions[0].product_data.attributes, loading_atributos: false})
    console.log(this.state.produto.product_data.title);
}

关于javascript - ReactJS 无法映射数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58614604/

相关文章:

javascript - 如何在另一个 Javascript 文件中使用我的游戏对象及其函数/变量

javascript - 使用 zombie.js 检查多个类

javascript - calc 未在 HTMLbutton.onclick 中定义

javascript - Redux - 在 React 组件的构造函数中使用 bindActionCreators 有什么缺点吗?

javascript - 检查是否单击了 div 或其子元素之一

javascript - React 中的多个过滤器

javascript - 组件 Prop 不会随着状态变化而更新

javascript - React-Router - 未捕获的类型错误 : Cannot read property 'route' of undefined

reactjs - 第三方组件未选取 Material UI 主题

node.js - React/Node/Express 和 google OAuth 的 CORS/CORB 问题