【问题标题】:create like button using react native and firebase使用 react native 和 firebase 创建类似按钮
【发布时间】:2020-05-30 00:24:40
【问题描述】:

我是 react-native 的初学者,我实际上是在 React-Native 中开发一个事件应用程序,我正在尝试创建一个喜欢/不喜欢按钮。这是我的代码,但不起作用

  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 不在列表中。喜欢是假的 请给我一个解决方案 提前致谢!

【问题讨论】:

  • 您能更好地描述一下您面临的问题吗?
  • 感谢您的评论,问题是当我按下<TouchableOpacity onPress={()=> like() /> 时,一位用户喜欢在所有用户中转换为真

标签: reactjs firebase react-native expo


【解决方案1】:

根据我的理解,你已经将变量初始化为字符串

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

然后,如果您单击“喜欢”按钮 3 次,您的添加将为您提供类似 111 的输出,如果单击之后,不喜欢将为您提供 11。 所以你需要像这样将你的变量初始化为整数

 const [likes,setLikes] = useState(0);

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

【讨论】:

  • 感谢您的评论,问题是当我按一位用户的<TouchableOpacity onPress={()=> like() /> 时。就像在所有用户中转换为 true 一样。如果用户按赞,我想创建一个列表。添加到列表中的用户 ID。如果用户 ID 在列表中,则为 true 。如果用户 ID 不在列表中。喜欢是假的。我希望你能理解我和我糟糕的英语
  • 您可以通过 redux 或 mobx 来实现这一点,只要在发生任何喜欢或不喜欢的动作时保持整个应用程序的计数相同。
  • 然后将该值存储在firebase db中并在componentdidmount上调用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多