Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 如何在文本标记中显示此.state值?_React Native - Fatal编程技术网

React native 如何在文本标记中显示此.state值?

React native 如何在文本标记中显示此.state值?,react-native,React Native,我将在文本标记中标记this.state。但是我写的代码没有显示值。问题是什么?如何显示? 我想要这个,状态值改变 constructor(props){ super(props); this.state= { nickname: "" } } componentWillMount(){ firebase.auth().onAuthStateChanged(user =>{ firebase.database()

我将在文本标记中标记this.state。但是我写的代码没有显示值。问题是什么?如何显示? 我想要这个,状态值改变

    constructor(props){
    super(props);
    this.state= {
      nickname: ""
    }
  }
  componentWillMount(){
    firebase.auth().onAuthStateChanged(user =>{
      firebase.database()
      .ref('/users/' + user.uid)
      .once('value', function(snapshot){
        console.log("snapshot value = "+snapshot.val().nickname)
        var nickname = snapshot.val().nickname
        console.log(nickname)

      })
      .then(
          this.state.nickname = snapshot.val().nickname
      )

    })
  }

在渲染函数中

<Text>{this.state.nickname}</ Text>

你为什么不试试这个

 componentWillMount(){
        firebase.auth().onAuthStateChanged(user =>{
          firebase.database()
          .ref('/users/' + user.uid)
          .once('value', function(snapshot){
          })
          .then(rtnick => {
              this.setState({ nickname:rtnick.val().nickname });
              console.log(nickname);
          })

        })
      }

首先,必须使用此.setState{}函数以正确的方式更新状态,然后为了在组件中显示状态,只需传递所需的状态:

state= {
  nickname: ""
}

componentWillMount() {
  firebase.auth().onAuthStateChanged(user => {
    firebase.database()
      .ref('/users/' + user.uid)
      .once('value', function(snapshot) {
        console.log("snapshot value = "+snapshot.val().nickname)
        let nickname = snapshot.val().nickname
        console.log(nickname)
      })
      .then(
        this.setState({ nickname: snapshot.val().nickname });
      )
   })
}

render() {
  const { nickname } = this.state;

  return (
    <Text>{nickname}</Text>
  );
}

希望这能有所帮助。

谁知道呢:你能分享你的代码让我们看看吗?或者更好的是,创建一个并发布它。没有人会花上几个小时去钻研数百行代码,所以如果你能把这个问题简化成一个演示同样问题的小例子,那对每个人都有帮助。如果没有,那么创建一个小示例并看到它工作可能会帮助您自己调试项目中的问题。这是一个很好的锻炼,而且可以节省时间!我想将firebase中的值放入状态,但我该如何做?编辑componentWillMount中的then函数。我将编辑我的答案以显示它。state.昵称不会编辑昵称的值。您必须使用this.setState函数@서성환错误:不变冲突:不变冲突:不变冲突:找到的对象作为React子对象无效:具有键{node\u,ref\u,index\u}的对象。如果您想呈现一个子集合,请改用数组。您能在then部分中记录昵称的值吗?并在这里发表评论
state= {
  nickname: ""
}

componentWillMount() {
  firebase.auth().onAuthStateChanged(user => {
    firebase.database()
      .ref('/users/' + user.uid)
      .once('value', function(snapshot) {
        console.log("snapshot value = "+snapshot.val().nickname)
        let nickname = snapshot.val().nickname
        console.log(nickname)
      })
      .then(
        this.setState({ nickname: snapshot.val().nickname });
      )
   })
}

render() {
  const { nickname } = this.state;

  return (
    <Text>{nickname}</Text>
  );
}