来自一个公共处理程序类的React-native Invoke API

时间:2017-06-22 15:32:30

标签: javascript react-native

我有一个使用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('.');
                                    }}
                                ]
                              )
});}

2 个答案:

答案 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});
                    });