如何显示用户使用AsyncStorage登录的次数

时间:2019-03-27 16:22:54

标签: 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);
    };

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")
    }
}

1 个答案:

答案 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包含“电子邮件”,“密码”和“计数器”。