首页 > 解决方案 > 使用 expo 的 SecureStore 在 reducer 文件中返回 Promise 而不是 JWT 令牌

问题描述

所以,我正在尝试获取我的减速器的 JWT 令牌INITIAL_STATE

我正在使用'expo-secure-store'包作为使用expo的存储令牌

但是当我尝试 getToken 它返回我一个承诺而不是令牌值,如下所示:

AuthUser: Promise {
  "_U": 0,
  "_V": 1,
  "_W": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo3LCJ1c2VybmFtZSI6InNocmVleWFjaEBzYXR2aXguY29tIiwiZW1haWwiOiJzaHJlZXlhY2hAc2F0dml4LmNvbSI",
  "_X": null,
}

这是我检索令牌的代码:

import * as SecureStorage from 'expo-secure-store';

const _retrieveData = async () => {
  try {
    const data = await SecureStorage.getItemAsync('token');
    return data;
  } catch (error) {
    console.log(error);
  }
};

const INIT_STATE = {
  loader: false,
  alertMessage: '',
  successMessage: '',
  showMessage: false,
  initURL: '',
  authUser: _retrieveData().then((token) => token),
  tempAuth: '',
  currentScreen: 0,
  showSuccessMessage: false,
  currentUser: null,
  sendOTP: false,
};

我从这里这里这里尝试了其他StackOverflow解决方案,但无法将令牌作为字符串值。

标签: react-nativeexpo

解决方案


在导出对象更改中,

authUser: _retrieveData().then(token => token),

authUser: _retrieveData,

现在无论你想在哪里调用这个函数,都像这样使用它

const response = await authUser();
console.log(response) 
// This will be the required token

以供参考,

看看从这里导出的存储对象

你看,我在这里传递了对函数的引用。

并在这里使用它如上所述


推荐阅读