/
eb
/
medium-clone
Обзор
Документация
Войти
/
eb
/
medium-clone
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/node_modules/components/addToFavorites.js
35 строк
1004 B
Evgeniy Budaev
React Hooks App
25 июл 2020, 15:34
25 июл 2020, 15:34
61784c7
Код
Авторство
О чём код?
import React from 'react' import classNames from 'classnames' import useFetch from 'hooks/useFetch' const AddToFavorites = ({isFavorited, favoritesCount, articleSlug}) => { const apiUrl = `/articles/${articleSlug}/favorite` const [{response}, doFetch] = useFetch(apiUrl) const isFavoritedWithResponse = response ? response.article.favorited : isFavorited const favoritesCountWithResponse = response ? response.article.favoritesCount : favoritesCount const buttonClasses = classNames({ btn: true, 'btn-sm': true, 'btn-primary': isFavoritedWithResponse, 'btn-outline-primary': !isFavoritedWithResponse }) const handleLike = event => { event.preventDefault() doFetch({ method: isFavoritedWithResponse ? 'delete' : 'post' }) } return ( <button className={buttonClasses} onClick={handleLike}> <i className="ion-heart"></i> <span> {favoritesCountWithResponse}</span> </button> ) } export default AddToFavorites