【发布时间】:2017-02-09 11:07:51
【问题描述】:
我正在使用 React 中的 fetch API 发出一个简单的 AJAX 请求,特别是在 componentDidMount() 函数中。
它正在工作,因为控制台似乎正在记录结果。但是,我不知道如何访问响应...
componentDidMount = () => {
let URL = 'https://jsonplaceholder.typicode.com/users'
fetch(URL)
.then(function(response) {
let myData = response.json()
return myData;
})
.then(function(json) {
console.log('parsed json', json)
})
.catch(function(ex) {
console.log('parsing failed', ex)
})
} // end componentDidMount
我尝试在 fetch 方法之外访问 myData,但这会引发错误,指出它未定义。所以只能在函数范围内访问。
然后我尝试了这个:
.then(function(response) {
let myData = response.json()
// return myData;
this.setState({
data: myData
})
})
这一次,我得到Cannot read property 'setState' of undefined(…)
如何将获取响应传递给状态,甚至只是一个全局变量?
更新
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor(props) {
super(props);
this.state = {
data: null
}
}
componentDidMount() {
let URL = 'https://jsonplaceholder.typicode.com/users'
fetch(URL)
.then( (response) => {
let myData = response.json()
// return myData;
this.setState({
data: myData
})
})
.then( (json) => {
console.log('parsed json', json)
})
.catch( (ex) => {
console.log('parsing failed', ex)
})
console.log(this.state.data)
} // end componentDidMount
render() {
return (
<div className="App">
{this.state.data}
</div>
);
}
}
export default App;
【问题讨论】:
标签: javascript json reactjs response fetch-api