React Native AsyncStorage ')' 结束复合表达式

React Native AsyncStorage ')' to end a compound expression

我在我的 react-native 应用程序中遇到这个错误。

意外的 JS 预期:意外的标识符“_asyncStorage”。应以 ')' 结束复合表达式。

这可能只是一个语法问题,但我想不通。

我是这个框架的新手,正在尝试为用户登录和注册功能实现 Redux。因为我不能使用 localStorage,所以我正在使用 AsyncStorage,但如果我能以某种方式简单地用 AsyncStorage 替换我的本地存储函数,我并不是很熟悉。我已经完成了同一应用程序的网络应用程序版本。我认为我的 Redux store.js 文件有问题。如果您可以帮助解决错误,请看这里

import thunk from "redux-thunk";
import { userLoginReducer, userRegisterReducer } from './src/redux/reducers/userReducers';
import AsyncStorage from '@react-native-async-storage/async-storage';

const reducer = combineReducers({
    //contains reducers
    userLogin: userLoginReducer,
    userRegister: userRegisterReducer
});

// const UnparsedUserInfo = await AsyncStorage.getItem("userInfo");
// const ParsedUserInfo = await AsyncStorage.getItem("userInfo");

const userInfoFromStorage = await AsyncStorage.getItem("userInfo") ? await AsyncStorage.getItem("userInfo") : null;

const initialState = {
    userLogin: {userInfo: userInfoFromStorage}
};

const middleware = [thunk];

const store = createStore(
    reducer,
    initialState,
    applyMiddleware(...middleware)
);

export default store```

您正在尝试在异步范围之外等待。你不能那样等待。你需要有一个异步函数来处理你的承诺并将你返回的数据保存在一个状态中然后你可以在你的表达式中使用这个状态,例如

    const [userInfoState, setUserInfoState] = useState(null);

    const getUserInfoAsync = async () => {
          const userInfo = await AsyncStorage.getItem('userInfo');
          setUserInfoState(userInfo);
    };

    useEffect(() => {
      getUserInfoAsync();
    }, []);

    const initialState = {
      userLogin: {userInfo: userInfoState}
    };