【发布时间】:2019-01-30 11:29:07
【问题描述】:
在这个项目中,我想使用从firebase 数据库中检索到的数据来设置userType 的状态。从firebase 获取工作正常,但我无法从那里设置userType 的状态
我已经尝试过了this.setState=({userType:snapshot.val()})this.state=({userType:snapshot.val()})
import React from 'react';
import { StyleSheet, Text, View, TouchableOpacity, TextInput, Image } from 'react-native';
import * as firebase from 'firebase';
export default class Home extends React.Component {
constructor(props){
super(props)
this.state=({
userId:firebase.auth().currentUser.uid,
userType:'f'
})
}
componentDidMount() {
this.readUserData();
};
readUserData=()=> {
userstype= 'users/'+ this.state.userId + '/userType'
firebase.database().ref(userstype).on('value', function (snapshot) {
this.setState=({userType:snapshot.val()})
});
alert(this.state.userType)
}
render() {
return (
<View style={styles.container}>
<Text style={styles.titleText}>Taams</Text>
<Text style={styles.edition}>Developer's Edition</Text>
<Text style={styles.titleText}>Home</Text>
<Text>Alpha 0.0.0.1</Text>
</View>
)}}
【问题讨论】:
-
您正在改变 setState 而不是调用它。就做
this.setState({ userType: snapshot.val() }) -
@AsafDavid 仍然显示错误
-
我修好了。现在它工作正常 readUserData=()=> { userstype= 'users/'+ firebase.auth().currentUser.uid + '/userType' firebase.database().ref(userstype).once('value')。然后(快照 => { this.state=({ uType: snapshot.val() }) })
-
您不应重新分配
this.state。阅读此reactjs.org/docs/state-and-lifecycle.html#using-state-correctly
标签: android reactjs react-native setstate