3 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
好的,我找到了解決方案,我必須對(duì)setState收到的內(nèi)容進(jìn)行處理。
async componentDidMount() {
try {
let res = await FetchImage(this.props.navigation.state.params.access_token);
this.setState({ test: res })
} catch (error) {
console.error(error);
}
}
我把它放在componentDidMount()
函數(shù)中,這樣就setState
不會(huì)循環(huán)。

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
response.json()也是Promise。所以你應(yīng)該附加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貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
我剛剛看到,我的解決方案之后產(chǎn)生了同樣的問題
?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>
? ? ? ? ? ? </>
? ? ? ? )
? ? }
}
但是,當(dāng)我嘗試使用存儲(chǔ)在我的“this.state.test”中的內(nèi)容時(shí),它是“未定義的”。
console.log(this._getData()) 顯示這個(gè){"_U": 0, "_V": 0, "_W": null, "_X": null}
我很絕望 :'(
添加回答
舉報(bào)