Я разрабатываю кнопку «Мне нравится», и в настоящее время число лайков увеличивается на 1 при каждом нажатии кнопки «Нравится».Тем не менее, я хочу сделать это более надежным и динамичным, и если вошедшему в систему пользователю уже понравился пост, то я хочу, чтобы его «лайк» исчез из аля Facebook, Reddit (upvote) и т. Д.
В настоящее время я отслеживаю количество лайков и кому понравился пост.Структура выглядит следующим образом:
post: {
likes: 3,
likedBy: ['userA', 'userB', 'userC']
}
Итак, я хочу, чтобы: когда нажимается кнопка «Мне нравится», я хочу выполнить поиск в свойстве likesBy, чтобы увидеть, понравился ли зарегистрированному пользователю пост,а затем либо увеличьте значение «Нравится» на 1, и добавьте их в массив, либо уменьшите значение «Нравится» на 1 и удалите их из массива.
Мне трудно понять, как написать эту логику с помощью действия React, которое обрабатывает это взаимодействие с firestore.
Вот что я написал до сих пор:
export const newLike = (post) => {
return (dispatch, getState, {getFirebase, getFirestore}) => {
const firestore = getFirestore();
const signedInUser = getState().firebase.auth;
console.log(signedInUser)
firestore.collection('posts').doc(post.id).update({
likes: (post.likes + 1),
likedBy: firestore.FieldValue.arrayUnion(signedInUser)
}).then(()=> {
dispatch({type: types.NEW_LIKE, post});
}).catch((err) => {
dispatch({ type: types.NEW_LIKE_ERROR, err});
});
};
};