我是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不在列表中。像是假的
请给我一个解决方法
预先感谢!
答案 0 :(得分:1)
根据您所了解的代码,您已经初始化了像字符串一样的变量
ListView.builder
如果使此函数在此变量上起作用
const [likes,setLikes] = useState('');
然后,如果您单击3次类似按钮,您的添加项将为您提供111的输出,如果在单击后单击3次,您的添加项将为您提供11的输出。 所以您需要像这样将变量初始化为整数
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
})};
如果遇到其他任何错误,请随时发表评论。