React native 动作必须是普通对象。在React Native中使用客户中间件进行异步操作

React native 动作必须是普通对象。在React Native中使用客户中间件进行异步操作,react-native,asyncstorage,React Native,Asyncstorage,我正在尝试在我的react本机应用程序中使用AsyncStorage。在restore session函数中,我使用AsyncStorage.multiGet获取用户名和位置。但我得到了“错误:操作必须是普通对象。使用自定义中间件进行异步归属”错误 我的index.js如下所示: const loggerMiddleware = createLogger(); const store = createStore(reducers, applyMiddleware(thunkMiddleware,

我正在尝试在我的react本机应用程序中使用AsyncStorage。在restore session函数中,我使用AsyncStorage.multiGet获取用户名和位置。但我得到了“错误:操作必须是普通对象。使用自定义中间件进行异步归属”错误

我的index.js如下所示:

const loggerMiddleware = createLogger();
const store = createStore(reducers, applyMiddleware(thunkMiddleware, loggerMiddleware));

const nsidenotify = () => (
  <Provider store={store}>
    <App />
  </Provider>
);

Redux操作无法执行异步操作。 使用像redux sagas这样的库来执行这些操作。 阅读Redux传奇和Redux的副作用,以及为什么它不能用于异步操作

export function sessionRestoring(){
  return {
    type: types.SESSION_RESTORING,
  };
};

export function signinRequest() {
  return {
    type: types.SIGNIN_REQUEST,
  };
}

export async function restoreSession() {
  console.log('Restoring Session');
  let userName = '';
  let userLocation = '';
  await  AsyncStorage.multiGet(['userName', 'userLocation'])
  .then(response => {
    userName = response['userName'];
    userLocation = response['userLocation'];
    console.log(`Found ${userName} from ${userLocation}`);
  })
  if (typeof userName == 'string'){
    return (dispatch) => {
      console.log('Dispatch Session Restoring');
      dispatch(sessionRestoring());
        return FIREBASE_AUTH.onAuthStateChanged(user => {
          if (user) {
            user.name = userName;
            user.location = userLocation;
            dispatch(signinRequestSuccess(user));
          }
        })
      }
  }
}