Как получить сохраненный элемент из объекта в AsyncStorage? - PullRequest
0 голосов
/ 04 июня 2019

Я сохраняю объект, содержащий данные пользователя, такие как электронная почта, имя пользователя и т. Д.

Я использовал AsyncStorage, чтобы сохранить их, и когда я их получаю, я просто вижу строку, когда я регистрируюсь или использую ее в моем textInput так,как с этим справиться и просто получить конкретные данные, такие как Just Email или Just Username, которые я сохранил?

Мой код

Регистрация

 const {
      username,
      email,
      city,
      mobileNumber,
    } = this.state;

  const profileData = {
        "username": username,
        "email": email,
        "city": city,
        "mobileNumber": mobileNumber
      }
 firebase
        .auth()
        .createUserWithEmailAndPassword(email, password)
        .then(async user => {
          firebase
            .database()
            .ref(`users/${user.user.uid}`)
            .set({
              username: username,
              type: type,
              email: email,
              city: city,
              mobileNumber: mobileNumber,
              token: fcmToken
            });
          this.props.navigation.navigate("Home");
          await AsyncStorage.setItem('@MyProfile:data', JSON.stringify(profileData)).then(() => console.log("Saved"));
        }).catch(err => console.log(err));

Экран профиля

async componentDidMount() {
        try {
            await AsyncStorage.getItem('@MyProfile:data')
                .then(data => this.setState({ data }))
                .catch(error => console.log('@error' + error));

                console.log(this.state.data); // 
        } catch (error) {
            console.log("@CError", error);
        }
    }

render(){
return(
   <View style={styles.logoSection}>
                                {/* <SvgComponent height={100} /> */}
                                <Icon name="ios-contact" size={90} color='#4d8dd6' style={{ marginTop: 9 }} />

                                <Text style={{ fontSize: 18, color: "#000", margin: 35, marginTop: 7 }}>{this.state.data}</Text> // i wnat just display username here from storage
                            </View>
)
}

Консоль

  console.log(this.state.data); 

В виде строки я думаю: {"username": "user", "email": "user@user.us", "city": "usercity "," mobileNumber ":" 0597979979 "}

1 Ответ

0 голосов
/ 05 июня 2019

{this.state.data.username} или {this.state.data['username']}

Но, вероятно, в этой строке внутри {this.state.data} у вас не будет доступа к имени пользователя при первом рендеринге, вероятно, this.state.data будет пустым, поэтому вам нужно проверить перед использованием this.state.data['username']!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...