Разбираюсь с react-om и js. Пытаюсь сделать компонент - счетчик.
Но не пойму, почему он мне показывает правильное количество нажатий, но после обновления первое нажатие всегда неучитывается.
Ниже код
import React, {useState} from 'react';
import classes from './LikeButton.module.css'
import DishesService from "../../API/DischesService.js";
const LikeButton = ({dish, changedLikes}) => {
const [likes, setLikes] = useState(dish)
function increment() {
setLikes({...likes, likes:likes.likes+1})
likesById(likes)
}
function decrement() {
setLikes({...likes, likes:likes.likes-1})
likesById(likes)
}
async function likesById(likes) {
await DishesService.likesByID(likes)
}
return (
<div>
<button
className={classes.likeButton}
onClick={() => {
increment()
changedLikes(likes)
}}
>
<img src={require('../../Images/Likes/like.png')} alt=''/>
</button>
<button
className={classes.likeButton}
onClick={() => {
decrement()
changedLikes(likes)
}}
>
<img src={require('../../Images/Likes/dislike.png')} alt=''/>
</button>
<p>{likes.likes}</p>
</div>
);
};
export default LikeButton;
При том, что на сервер функцией async function likesById(likes) отправляются неизмененные likes функциями increment/decrement, а изначальное состояние.
Пробовал изменять условия при нажатии кнопки и передавать ссылкой а не функцией - эффекта не дало.
Не пойму почему setLikes - отрабатывает не сразу...