我用过两节课 我将第二课打为下面的
let s = new SearchExtend();
output = s.fetchData(search)
alert(output)
第二个功能:
fetchData = (search) => {
fetch('http://example.com/search.php' , {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
// Getting the search.
search: search
})
}).then((response) => response.json())
.then((responseJson) => {
return responseJson;
})
.catch((error) => {
console.error(error);
});
}
但我进入“警觉”未定义
当我使用this.setState而不是return时,我收到以下错误:
警告setstate(...)只能更新已安装或安装的组件
答案 0 :(得分:1)
您正在使用undefined
因为您正在使用承诺。最初它返回undefined,一旦解决了promise,就会获得实际数据。
处理此问题的更好方法是返回承诺并在外部解决,如下所示: -
const fetchApi = () => {
return fetch("https://swapi.co/api/people" , {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
}).then((response) => {
return response.json();
})
.then((responseJson) => {
return responseJson;
})
.catch((error) => {
console.error(JSON.stringify(error));
});
}
fetchApi()
.then((data) => {
console.log("data", data);
})