我有一个使用FETCH从外部Web服务获取数据的通用函数。将在componentDidMount()下的多个屏幕中调用和解析此函数。而不是在多个地方重复相同的代码,我把它放在一个公共类下面,但遗憾的是,数据不会返回到那些屏幕。
共同功能
export function convertValue(fromVal, toVal) {
var requestObj = {};
let apiEndpoint = '<target endpoint>'
return fetch(apiEndpoint, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
})
.then((response) => response.json())
.then((responseJson) => {
return responseJson;
})
.catch((error) => {
console.log('Error: ', error);
});}
下面的示例调用,并且在加载屏幕时没有弹出窗口。
componentDidMount () {
AsyncStorage.getItem('user_default').then((value) => {
this.setState({userDefault: value});
}).then((value) => {
var sample = convertValue('A', 'B');
Alert.alert(
'Success',
JSON.stringify(sample),
[
{text: 'OK',
onPress: () => {
console.log('.');
}}
]
)
});}
答案 0 :(得分:0)
componentDidMount () {
AsyncStorage.getItem('user_default').then((value) => {
this.setState({userDefault: value});
convertValue('A', 'B').then((json)=>{
alert(json)
})
})}
这可能适合你。问题是异步调用的链接不正确。
答案 1 :(得分:0)
尼克是对的,找到了正确的方法 -
convertValue('A', 'B')
.then((responseJson) => {
this.setState({returnedValue: responseJson.convertedValue});
});