[使用react native和firebase创建类似按钮

问题描述 投票:0回答:1

我是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不在列表中。像是假的请给我解决预先感谢!

reactjs firebase react-native expo
1个回答
0
投票

根据您的代码,我了解的是,您已初始化了像字符串一样的变量

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);

如果遇到其他错误,请随时发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.