3 回答
TA贡献1875条经验 获得超5个赞
好的,我找到了解决方案,我必须对setState收到的内容进行处理。
async componentDidMount() {
try {
let res = await FetchImage(this.props.navigation.state.params.access_token);
this.setState({ test: res })
} catch (error) {
console.error(error);
}
}
我把它放在componentDidMount()
函数中,这样就setState
不会循环。
TA贡献1893条经验 获得超10个赞
response.json()也是Promise。所以你应该附加await在它前面。
export default async function FetchImage(access_token) {
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer " + access_token);
myHeaders.append("Content-Type", "application/json");
var formdata = new FormData();
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
try {
const response = await fetch("https://api.imgur.com/3/account/me/images", requestOptions)
// console.log(await response.text());
return await response.json()
}
catch (err) {
console.log('fetch failed', err);
}
}
TA贡献1851条经验 获得超3个赞
我刚刚看到,我的解决方案之后产生了同样的问题
async _getData() {
try {
this.state.test = await FetchImage(this.props.navigation.state.params.access_token);
console.log(this.state.test.data[0]["link"])
return (this.state.test)
} catch (error) {
console.error(error);
}
// console.log(res)
}
我在这里称呼他:
render() {
try {
console.log(this._getData())
} catch (error) {
console.error(error);
}
console.log("ici = " + this.props.test)
return (
<>
<View>
<Text>access_token:</Text>
</View>
<View style={styles.buttonFav}>
<Button buttonStyle={{ backgroundColor: '#4D4D4D' }} title="FavNav" onPress={() => this.props.navigation.navigate('FavNav')}></Button>
</View>
<View style={styles.buttonFind}>
<Button buttonStyle={{ backgroundColor: '#4D4D4D' }} title="FindNav" onPress={() => this.props.navigation.navigate('FindNav')}></Button>
</View>
</>
)
}
}
但是,当我尝试使用存储在我的“this.state.test”中的内容时,它是“未定义的”。
console.log(this._getData()) 显示这个{"_U": 0, "_V": 0, "_W": null, "_X": null}
我很绝望 :'(
添加回答
举报