如何将变量导出到 AsyncStorage?
How can I export a variable to AsyncStorage?
我想从 authActions.js 导出我的 user_id
变量到 auth.js 的 USER_KEY const 这可能吗?
这是我的 authActions.js
函数,它生成 user_id
export function loginUser(email, password) {
return function (dispatch) {
return axios.post(SIGNIN_URL, { email, password }).then((response) => {
var { user_id, token } = response.data;
console.log('my user_id = ' + user_id);
console.log('my token = ' + token);
dispatch(authUser(user_id));
isSignedIn();
}).catch((error) => {
console.log(error);
dispatch(addAlert("Could not log in."));
});
};
}
这是我的 auth.js
我有 const USER_KEY
import { AsyncStorage } from "react-native";
export const USER_KEY = "auth-key";
console.log('USER_KEY ' + USER_KEY);
export const onSignIn = () => AsyncStorage.setItem(USER_KEY, "true");
export const onSignOut = () => AsyncStorage.removeItem(USER_KEY);
export const isSignedIn = () => {
return new Promise((resolve, reject) => {
AsyncStorage.getItem(USER_KEY)
.then(res => {
if (res !== null) {
resolve(true);
} else {
resolve(false);
}
})
.catch(err => reject(err));
});
};
变化:
export const onSignIn = () => AsyncStorage.setItem(USER_KEY, "true");
至:
export const onSignIn = (user_id) => AsyncStorage.setItem(USER_KEY, user_id);
然后在 POST 的 .then()
中,您可以:
onSignIn(user_id);
但是之后立即检查 isSignedIn()
可能不会按预期工作,因为 AsyncStorage
是异步的。如果他们刚拿到user_id
和token
,有必要去那里检查吗?
我想从 authActions.js 导出我的 user_id
变量到 auth.js 的 USER_KEY const 这可能吗?
这是我的 authActions.js
函数,它生成 user_id
export function loginUser(email, password) {
return function (dispatch) {
return axios.post(SIGNIN_URL, { email, password }).then((response) => {
var { user_id, token } = response.data;
console.log('my user_id = ' + user_id);
console.log('my token = ' + token);
dispatch(authUser(user_id));
isSignedIn();
}).catch((error) => {
console.log(error);
dispatch(addAlert("Could not log in."));
});
};
}
这是我的 auth.js
我有 const USER_KEY
import { AsyncStorage } from "react-native";
export const USER_KEY = "auth-key";
console.log('USER_KEY ' + USER_KEY);
export const onSignIn = () => AsyncStorage.setItem(USER_KEY, "true");
export const onSignOut = () => AsyncStorage.removeItem(USER_KEY);
export const isSignedIn = () => {
return new Promise((resolve, reject) => {
AsyncStorage.getItem(USER_KEY)
.then(res => {
if (res !== null) {
resolve(true);
} else {
resolve(false);
}
})
.catch(err => reject(err));
});
};
变化:
export const onSignIn = () => AsyncStorage.setItem(USER_KEY, "true");
至:
export const onSignIn = (user_id) => AsyncStorage.setItem(USER_KEY, user_id);
然后在 POST 的 .then()
中,您可以:
onSignIn(user_id);
但是之后立即检查 isSignedIn()
可能不会按预期工作,因为 AsyncStorage
是异步的。如果他们刚拿到user_id
和token
,有必要去那里检查吗?