我是react-native的初学者,我实际上是在React-Native中开发事件应用程序,我正在尝试创建一个like / dislike按钮。那是我的代码,但是不起作用
const [likes,setLikes] = useState('');
const [liked,setLiked] = useState(false);
const eventInfo = ()=>{
const getInfo = firebase.database().ref('/users/event/' +postKey)
getInfo.on('value', snapshot => {
console.log('User data: ', snapshot.val())
setLikes(snapshot.val().likes)
// setIntersted(snapshot.val().interested)
// setInterestedNmb(snapshot.val().interestedNmb)
// setInterestedName(snapshot.val().interestedName)
setLiked(snapshot.val().liked)
});
}
const like = () => {
const updateLike = firebase.database().ref('/users/event/' +postKey)
updateLike.update({
likes: likes +1 ,
liked: true
})
};
const dislike = () => {
const updateLike = firebase.database().ref('/users/event/' +postKey)
updateLike.update({
likes: likes -1 ,
liked: false
})
};
问题是当我由一个用户按<TouchableOpacity onPress={()=> like() />
时。喜欢在所有用户中转换为true。如果用户按下,我想创建一个列表。添加到列表中的用户ID。如果用户ID在列表中,则为true。如果用户ID不在列表中。像是假的请给我解决预先感谢!
根据您的代码,我了解的是,您已初始化了像字符串一样的变量
const [likes,setLikes] = useState('');
如果使此函数在此变量上起作用
const like = () => {
const updateLike = firebase.database().ref('/users/event/' +postKey)
updateLike.update({
likes: likes +1 ,
liked: true
})};
const dislike = () => {
const updateLike = firebase.database().ref('/users/event/' +postKey)
updateLike.update({
likes: likes -1 ,
liked: false
})};
然后,您的添加项将给您提供111的输出,如果您单击了按钮3次,而单击后不喜欢的将给您11。因此,您需要像这样将变量初始化为整数
const [likes,setLikes] = useState(0);
如果遇到其他错误,请随时发表评论。