React + Fetch + Json。 TypeError:无法读取未定义的属性

Posted

技术标签:

【中文标题】React + Fetch + Json。 TypeError:无法读取未定义的属性【英文标题】:React + Fetch+ Json. TypeError: Cannot read property of undefined 【发布时间】:2017-06-21 08:16:08 【问题描述】:

当我使用 SuperAgent 时,我没有遇到这个问题,但我决定使用 Window.fetch polifyl 并遇到了这个问题。我看到所有数据都已加载,但仍然显示错误。 请您帮我识别此错误:

在 render() 中,我根据获得的列表生成组件列表:

    render() 

    if (this.state.data.list) 
        console.log("render: " + this.state.data.list);
        var counter = 0;
        const list = this.state.data.list.map((item) => 
....

【问题讨论】:

你没有关闭第一个 thenable 调用。 我想是这样的:获得响应后,将此响应发送给下一个函数,并将该函数的结果发送给下一个函数,但我没有返回任何结果。这意味着我不会在没有函数链中函数返回值的情况下传输任何数据...... 【参考方案1】:

屏幕截图中的承诺处理程序不起作用:

.then((json) => console.log('parsed json: ', json))
.then((json) =>  this.setState( data: json ); )

“从解析这个promise中获取值并将其传递给console.log。然后,将console.log的返回值(即undefined)传递给this.setState。”

【讨论】:

谢谢提示! fetch(url, headers: 'Accept': 'application/json', , ).then((response) => response.json() .catch(err => console.err('$err' 发生了!); return ; )) .then((json) => console.log('parsed json: ', json); this.setState( data: json ) ) .catch((err) => console.log('fetch request failed: ', err) )【参考方案2】:
    fetch(url, 
        headers: 
            'Accept': 'application/json',
        ,
    ).then((response) => response.json()
        .catch(err => 
            console.err(`'$err' happened!`);
            return ;
        ))
        .then((json) => 
            console.log('parsed json: ', json);
            this.setState( data: json )
        )
        .catch((err) =>  console.log('fetch request failed: ', err) 
        )

【讨论】:

以上是关于React + Fetch + Json。 TypeError:无法读取未定义的属性的主要内容,如果未能解决你的问题,请参考以下文章

React + Fetch + Json。 TypeError:无法读取未定义的属性

如何从 fetch 中获取 JSON 数据(react-native)

react-native android fetch json停止工作

如何在 React 中正确地 fetch() JSON

react踩坑记录——使用fetch获取json数据报错

React Fetch:获取json结果但显示网络错误