【问题标题】:React/Firebase saving and accessing a valueReact/Firebase 保存和访问值
【发布时间】:2018-04-11 22:45:52
【问题描述】:

我是 React 的新手,我正在构建一个投票网络应用程序,它允许用户输入某人的姓名并将他们添加到页面上。一旦他们在页面上,人名旁边有两个图标,一个赞成票和反对票。我看到人们被发布到 firebase 并且看到我的 votes 元素设置为 0,这是我手动执行的,但我不确定我是否正在访问它或影响该变量的更改,因为我没有在 Firebase 上看不到它的变化。

当人被添加到火力基地时:

addPlayer(player){
this.database.push().set({ playerContent: player, votes: 0});
}

就像我说的,当我添加一个人时,上面的信息会立即显示在 Firebase 上。在它说投票的人下面:0。然后我将内容添加到页面:

render(props){
    return(
        <div className="player fade-in">
            <span className="upbtn">
            x
            </span>
            <p className="playerContent">{ this.playerContent }</p>
            <span className="downbtn" 
            onClick={() => this.handleDownvote(this.playerId)}>
            &times;
            </span>

        </div>
    )
}

这里是handleDownVote:

    handleDownvote(id){
    this.props.downvotePlayer(id)
}

以及功能:

downvotePlayer(playerId){
this.database.child(playerId).votes--;
}

如果需要其他代码,我会链接存储库

【问题讨论】:

    标签: reactjs firebase


    【解决方案1】:

    您没有影响数据。您应该使用事务,因为它们可以防止许多用户同时访问时数据丢失/损坏。试试这个:

    downvotePlayer(playerId){
        this.database.child(playerId).transaction(function (player) {
            if (player) {
                player.votes--
            }
            return player;
        });
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 2017-10-30
      • 2019-07-07
      相关资源
      最近更新 更多