React Native AsyncStorage ')' 以结束复合表达式
Posted
技术标签:
【中文标题】React Native AsyncStorage \')\' 以结束复合表达式【英文标题】:React Native AsyncStorage ')' to end a compound expressionReact Native AsyncStorage ')' 以结束复合表达式 【发布时间】:2022-01-09 22:22:57 【问题描述】:我在我的 react-native 应用程序中收到此错误。
意外的 JS 预期:意外的标识符“_asyncStorage”。应以 ')' 结束复合表达式。
这可能只是一个语法问题,但我无法弄清楚。
我对框架相当陌生,并试图为用户登录和注册功能实现 Redux。因为我不能使用localStorage
,所以我使用AsyncStorage
,但如果我可以简单地用AsyncStorage
替换我的localstorage 函数,我并不是很熟悉。我已经完成了同一个应用程序的网络应用程序版本。我认为 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```
【问题讨论】:
【参考方案1】:您正在尝试在异步范围之外等待。你不能这样等待。您需要有一个异步函数来处理您的承诺并将返回的数据保存在一个状态中,然后您可以在您的表达式中使用此状态,例如
const [userInfoState, setUserInfoState] = useState(null);
const getUserInfoAsync = async () =>
const userInfo = await AsyncStorage.getItem('userInfo');
setUserInfoState(userInfo);
;
useEffect(() =>
getUserInfoAsync();
, []);
const initialState =
userLogin: userInfo: userInfoState
;
【讨论】:
抱歉,您能详细说明您的意思吗?我是这方面的新手,并且一直在尝试这样做,但我可能以错误的方式理解了您的评论 是的,所以你需要一个异步函数。让我更新我的答案。以上是关于React Native AsyncStorage ')' 以结束复合表达式的主要内容,如果未能解决你的问题,请参考以下文章
对react native 的AsyncStorage 进行小型封装
使用 React native 不推荐使用 AsyncStorage
React Native AsyncStorage 存储字符串以外的值
React Native React Navigation 屏幕在使用 AsyncStorage 登录后不会重定向