响应本机的回调函数定义和调用问题

时间:2017-08-28 09:07:00

标签: reactjs react-native react-native-android flowtype react-native-ios

朋友我将把一个类定义为所有函数。现在我们需要一些函数及其回调。所以我定义如下。

CallBack定义:

export const getStoredData(key: string, callback?: ?(error: ?Error, result: ?string)) =>{
      try {
      const value = await AsyncStorage.getItem(key);
      if (value !== null){
        return value
      }
    } catch (error) {
      return error
    }
}

按以下方式调用该功能:

   getStoredData('apple' , (error , result) =>{
     if (error) {
       console.log('error is = ', error);
     } else {
       console.log('result is = ', result);
     }
   });

但我有错误来定义功能意外令牌。

请帮帮我。

4 个答案:

答案 0 :(得分:3)

正如@MayankShukla所说,你没有正确使用箭头功能。

要修复表达式,您还需要添加=>void,如下所示,以修复callback的函数类型,

export function getStoredData(key: string, callback?: ?(error: ?Error, result: ?string) => void ) {

在我的vs代码意外标识符中,上述代码消失了。

编辑评论1:从callback获取结果,尝试更改功能

export async function getStoredData(key: string, callback?: ?(error: ?Error, result: ?string) => void ) {
    try {
        const value = await AsyncStorage.getItem(key);
        if (value !== null) {
            callback(null, value);
            return value;
        }
    } catch (error) {
        callback(error, null);
        return error;
    }
}

答案 1 :(得分:1)

你正在以错误的方式使用箭头功能,你忘了=,意外的令牌是因为这里的=>

export const getStoredData(key: string, callback?: ?(error: ?Error, result: ?string)) => {
   ....
}

要么像这样写(在getStoredData之后注意=):

export const getStoredData = (key: string, callback?: ?(error: ?Error, result: ?string)) => { 
    ....
}

或删除=>

export function getStoredData (key: string, callback?: ?(error: ?Error, result: ?string)){
   ....
}

答案 2 :(得分:0)

您的语法错误,因为您没有按照自己的意愿导出功能。尝试分配常量并正确关闭括号:

export const getStoredData = (key, callback) => {
  try {
  const value = await AsyncStorage.getItem(key);
  if (value !== null){
    return value
  }
  } catch (error) {
    return error
  }
};

getStoredData('apple', (error, result) => {
 //do stuff
});

答案 3 :(得分:0)

/*

* created by Suresh Mewara

* Date 09-07-2018

*/

import React, {Component} from 'react';
import {AsyncStorage, } from 'react-native';

export class DBPreference {
  // Database key
  static LOGIN_STATUS = 'loginStatus';
  static EULA_STATUS = 'eulaStatus';
  static ACCESS_CODE = 'accessCode';





  static retrieveData = async (key) => {
    try {
      const value = await AsyncStorage.getItem(key);
      if (value !== null) {
        // We have data!!
        console.warn(value);
        return value;
      }
     } catch (error) {
       // Error retrieving data
     }
  }



  static getStoredData = async (key, callback) => {
  try {
  const value = await AsyncStorage.getItem(key);
  if (value !== null){
    callback(null, value);
    console.warn(value);
    return value
  }
  } catch (error) {
    callback(error, null);
    return error
  }
};
}