无法读取React Native应用启动时的AsyncStorage值

时间:2017-01-23 03:06:37

标签: ios react-native react-redux

我正在使用React Native和Redux。以下代码用于创建Redux存储,并使用AsyncStorage通过检查authToken是否存在来检查用户是否已登录。

import {createStore} from 'redux';
import {persistStore} from 'redux-persist';

async function getAuthToken() {
  return await AsyncStorage.getItem('authToken');
}

export function createStore(onCompletion:() => void):any {
  ...

  const store = createStore(
    reducer,
    {
      auth: {
        authenticated: !!getAuthToken()
      }
    },
    enhancer);

  persistStore(store, {
    storage: AsyncStorage,
  },
  onCompletion);
}

商店的创建:

export default class App extends Component {

  constructor(props) {
    super(props);
    this.state = {
      store: createStore(...),
    };
  }

  render() {
    return (
      <Provider store={this.state.store}>
        <AppNavigator />
      </Provider>
    );
  }
}

用户登录后,authToken值会正确设置,并在用户注销后删除。但重新启动应用程序后,authToken不会持久存在。第一次调用getAuthToken始终会从AsyncStorage

返回此垃圾值
  

{_45:0,_81:0,_65:null,_54:null}

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

现在您要从AsyncStorage返回一个承诺,您需要返回令牌值。尝试:

NSString *password = @"Secret password";