#react-native #asyncstorage
#react-native #asyncstorage
Вопрос:
В настоящее время я пытаюсь показать полный журнал того, сколько раз пользователь входил в систему с помощью 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);
};
РАБОЧИЙ СТОЛ —
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")
}
}
Ответ №1:
Я думаю, вы хотите знать, сколько раз пользователь входил в ваше приложение? Для этого вы можете сохранить счетчик 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);
...
И на рабочем столе -,
Общее количество вы получите в AsyncStorage
.
...
//Here you will get the cont
const items = await AsyncStorage.getItem("loginArray")
this.setState({ userCredentials: items })
...
items
содержит ’email’, ‘password’ и ‘counter’.
Комментарии:
1. Спасибо за ответ. У меня в консоли отображается счетчик, однако после каждой попытки входа в систему он выдает следующее:
\"\01\\"1\"1\\"1
.2. Привет, я обновил код. Проблема в разборе целых чисел. изменено на count = parseInt (значение) 1. Попробуйте это.
3. Здравствуйте, счетчик возвращает «null» после каждого входа, независимо от того, входит ли в систему существующий пользователь или новый пользователь, входящий в систему в первый раз.