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

时间:2020-05-30 00:24:40

标签: reactjs firebase react-native expo

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

1 个答案:

答案 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
})};

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