我目前正在尝试显示用户使用AsyncStorage登录多少次的完整日志。
这是因为我想在用户首次登录时显示弹出模式。
有没有办法做到这一点?
以前,我已经能够在console.log中显示用户详细信息,该信息以字符串格式显示电子邮件和密码。
但是,我不确定该从那里去。 for循环会是合适的解决方案,还是已经有一种方法可以实现此目的?
登录屏幕-
_loginUser = async () => {
const { password, email } = this.state;
if(email == '' || password == '') {
alert('Please enter all fields');
}
else {
//save data using AsyncStorage
let loginArray = {
email: email,
password: password
}
//key of the item to set
AsyncStorage.setItem('loginArray',
JSON.stringify(loginArray));
console.log(loginArray);
// const logsInfo = await AsyncStorage.getAllKeys('loginArray');
// console.log(this.setState({ logs: logsInfo }));
this.setState({
loading: true
});
this._signInAsync();
}
}
_signInAsync = async () => {
setTimeout(() => {
this.setState({
loading: false,
});
this.props.navigation.navigate("App");
}, 2000);
};
HOMESCREEN-
fetchAllItems = async () => {
try {
const keys = await AsyncStorage.getAllKeys()
const items = await AsyncStorage.multiGet(keys)
this.setState({ userCredentials: items })
Reactotron.log(this.state.userCredentials);
} catch (error) {
console.log(error, "problemo")
}
}
答案 0 :(得分:0)
我想您想知道某个用户登录您的应用多少次?
为此,您可以在AsyncStorage
中保留一个计数器。
在登录屏幕-中,
...
// Count of last logged in
let count = 0
try {
const value = await AsyncStorage.getItem("COUNTER");
if (value !== null) {
// We have counter!!
count = parseInt(value) + 1
}
} catch (error) {
// Error retrieving data, ie. count = 0
}
let loginArray = {
email: email,
password: password,
counter: count
};
//key of the item to set
AsyncStorage.setItem("loginArray", JSON.stringify(loginArray));
AsyncStorage.setItem("COUNTER", JSON.stringify(count));
console.log(loginArray);
...
在HOMESCREEN中-
您将在AsyncStorage
中获得总数。
...
//Here you will get the cont
const items = await AsyncStorage.getItem("loginArray")
this.setState({ userCredentials: items })
...
items
包含“电子邮件”,“密码”和“计数器”。