создать кнопку Like с помощью react native и firebase - PullRequest
0 голосов
/ 30 мая 2020

Я новичок в 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 у всех пользователей. я хочу создать список, если пользователь нажимает лайк. идентификатор пользователя добавлен в список. и если идентификатор пользователя есть в списке, то вроде верно. если идентификатор пользователя отсутствует в списке. как это ложь, дайте мне решение, пожалуйста, заранее спасибо!

1 Ответ

0 голосов
/ 30 мая 2020

Из вашего кода, как я понимаю, вы инициализировали переменные лайки как строку

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

Если вы получаете какую-либо другую ошибку, не стесняйтесь комментировать.

...