Как показать, сколько раз пользователь входил в систему с помощью AsyncStorage

#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» после каждого входа, независимо от того, входит ли в систему существующий пользователь или новый пользователь, входящий в систему в первый раз.