繁体   English   中英

我无法在React Native中设置状态

[英]I can't set State in React Native

在这个项目中,我想使用从Firebase数据库检索的数据设置userType的状态。 从firebase获取正常工作,但我不能从那里设置userType的状态

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.state=({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>

要设置状态,请尝试执行以下操作,而不是this.state=({userType:snapshot.val()})this.setState({ userType:snapshot.val() });

仅在构造函数中使用this.state ={} 应该在其他任何地方。

this.setState({}) 

所以改变

    firebase.database().ref(userstype).on('value', function (snapshot) {
  this.state=({userType:snapshot.val()})
});

    firebase.database().ref(userstype).on('value', function (snapshot) {
  this.setState({userType:snapshot.val()})
});
firebase.database().ref(userstype).on('value', (snapshot) => {
  this.setState({userType: snapshot.val()})
});

这可能是一个上下文问题。 如果不绑定匿名函数,您将失去原始上下文。 尝试使用ES6的箭头功能和this.setState({})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM