【问题标题】:React Native - get data from PromiseReact Native - 从 Promise 获取数据
【发布时间】:2018-04-27 10:15:15
【问题描述】:

在我的 React Native 应用程序中,我从 API 接收到一个令牌。每次应用程序向服务器发送请求时,都需要此令牌。我将令牌保存在 AsyncStorage 中:

export const onSignIn = (value) =>  AsyncStorage.setItem('USER_TOKEN', value);

在应用程序的许多不同部分,我需要这个令牌,因此我想使用一个函数,从令牌中提取信息:

export const getTokenInfo = async () => {
    try{
        const value = await AsyncStorage.getItem('USER_TOKEN')
        .then((res) => {
          const jsonData = jwtDecode(res);
          return jsonData;
        })
    }
    catch(e){
        console.log('caught error', e);
    }
}

在其他组件中调用该函数时,它只返回 Promise 本身而不是令牌。是否有可能获得令牌,但不能获得承诺?一种可能的方法是使用setState() 将令牌存储在一个状态中,但是有一些组件(例如 DrawerNavigator)不在一个类中。

谢谢!

【问题讨论】:

  • 不,这是不可能的。
  • 改用 cookie。
  • 我对你的代码有点困惑。 AsyncStorage.getItem() 返回一个字符串。你为什么要转换成json?

标签: react-native promise


【解决方案1】:

您忘记返回 getTokeninfo 函数的值

export const getTokenInfo = async () => {
    try{
        const value = await AsyncStorage.getItem('USER_TOKEN')
        .then((res) => {
          const jsonData = jwtDecode(res);
          return jsonData;
        })
        
        return value // <---- you forgot this line
    }
    catch(e){
        console.log('caught error', e);
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 2017-01-31
    • 2021-09-26
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多