我对React非常陌生,我正在建立一个投票网络应用程序,允许用户输入某人的姓名并将其添加到页面上。一旦他们在页面上,人名旁边有两个图标,一个upvote和downvote。我看到人们被发布到firebase并看到我的投票元素设置为0,这是我手动完成的,但我不确定我是否正在访问它或影响对该变量的更改所有,因为我在Firebase上看不到它的变化。
将此人添加到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)}>
×
</span>
</div>
)
}
这是handleDownVote:
handleDownvote(id){
this.props.downvotePlayer(id)
}
功能:
downvotePlayer(playerId){
this.database.child(playerId).votes--;
}
如果需要其他代码,我将链接存储库
答案 0 :(得分:1)
您不会影响数据。您应该使用事务,因为它们可以防止许多用户同时访问时的数据丢失/损坏。试试这个:
downvotePlayer(playerId){
this.database.child(playerId).transaction(function (player) {
if (player) {
player.votes--
}
return player;
});
}