React native 动作必须是普通对象。在React Native中使用客户中间件进行异步操作
我正在尝试在我的react本机应用程序中使用AsyncStorage。在restore session函数中,我使用AsyncStorage.multiGet获取用户名和位置。但我得到了“错误:操作必须是普通对象。使用自定义中间件进行异步归属”错误 我的index.js如下所示: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,
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));
}
})
}
}
}