При обновлении страницы состояние кнопки обнуляется React

Есть карточки товаров, в каждой карточки есть кнопка добавления в избранное, когда товар не добавлен в избранное кнопка серая и при нажатии становится красной. Товар добавляется в избранное и из избранного удаляется, но при обновлении страницы состояние кнопки обнуляется и она становится серой, несмотря на то, что в избранном есть карточка. Как решить?

App.jsx :

function App() {
const [items, setItems] = React.useState([]);
const [favorite, setFavorite] = React.useState([]);

React.useEffect(() => {
    async function fetchData() {
        try {
            const [itemsResponse, favoriteResponse] = await Promise.all([
                axios.get('https://path.mockapi.io/items'),
                axios.get('https://path.mockapi.io/favorites'),
            ]);

            setIsLoading(false);

            setFavorite(favoriteResponse.data);
            setItems(itemsResponse.data);
        } catch (error) {
            alert('Error while loading data');
            console.error(error);
        }
    }
    fetchData();
}, []);

const onAddToFavorite = async obj => {
    try {
        if (favorite.find(favObj => Number(favObj.id) === Number(obj.id))) {
            axios.delete(`https://path.mockapi.io/favorites/${obj.id}`);
            setFavorite(prev => prev.filter(item => Number(item.id) !== Number(obj.id)));
        } else {
            const { data } = await axios.post(
                'https://path.mockapi.io/favorites',
                obj,
            );
            setFavorite(prev => [...prev, data]);
        }
    } catch (error) {
        alert('Error while adding to favorite');
        console.error(error);
    }
};                                                                                 
  return (
    <AppContext.Provider value={{ items, favorite, onAddToFavorite }}>
        <Suspense>
            <ScrollToTop />
            <Routes>
                <Route path='/' exact element={
                        <Home
                            items={items}
                            onAddToFavorite={onAddToFavorite}
                        />}/>
                <Route path='/favorite' exact element={<Favorite items={favorite} />} /> 
            </Routes>
        </Suspense>
    </AppContext.Provider>
);}export default App;

Карточка товара CarCard.jsx :

 function CarCard({

        title,
        price,
        imageUrl,
        gearbox,
        fuelTank,
        body,
        capacity,
        onFavorite,
        discount,
        id,
        favorited = false,
        loading = false,
        props,
    }) {
        const [isFavorite, setIsFavorite] = React.useState(favorited);

    const obj = {
        id,
        parentId: id,
        imageUrl,
        title,
        price,
        gearbox,
        fuelTank,
        capacity,
        body,
        discount,
    };

    const onClickFavorite = () => {
        onFavorite(obj);
        setIsFavorite(!isFavorite);
    };

    return (
        <div className={styles.card}>
                <>
                    <h2 className={styles.title}>
                        <Link to={`/${id}`}>
                            <p>{title}</p>
                        </Link>
                        {onFavorite && (
                            <button className={styles.favorite} onClick={onClickFavorite}>
                                <img src={isFavorite ? '/images/like.svg' : '/images/unlike.svg'} alt={isFavorite ? 'Like' : 'Unlike'}/>
                            </button>
                        )}
                    </h2>
                    <Link to={`/${id}`}>
                        <div className={styles.body}>{body}</div>
                        <div className='d-flex aic jcc pos-r'>
                            <img className='mt-50' src={imageUrl} alt='Car' />
                            <div className={styles.blur}></div>
                        </div>
                        <div className='d-flex jcsb aic mt-50'>
                            <div className='d-flex aic jcc tac'>
                                <img
                                    className='mr-6'
                                    width={24}
                                    height={24}
                                    src='./images/gas-station.svg'
                                    alt='FuelTank'
                                />
                                <p className={styles.carDetails}>{fuelTank}L</p>
                            </div>
                            <div className='d-flex aic jcc tac'>
                                <img
                                    className='mr-6'
                                    width={24}
                                    height={24}
                                    src='./images/car.svg'
                                    alt='GearBox'
                                />
                                <p className={styles.carDetails}>{gearbox}</p>
                            </div>
                            <div className='d-flex aic jcc tac'>
                                <img
                                    className='mr-6'
                                    width={24}
                                    height={24}
                                    src='./images/people.svg'
                                    alt='Capacity'
                                />
                                <p className={styles.carDetails}>{capacity} People</p>
                            </div>
                        </div>
                        <div className='d-flex flex-row aic jcsb mt-20'>
                            <div className=''>
                                <div className='d-flex aic'>
                                    <Price price={price} />
                                    <span className='span'>/day</span>
                                </div>
                                {discount && (
                                    <div className='d-flex flex-row aic'>
                                        <div className={styles.discount}>${discount}.00</div>
                                    </div>
                                )}
                            </div>
                            <button className={styles.button}>Rent Now</button>
                        </div>
                    </Link>
                </>
        </div>
    );
}

export default CarCard;

Страница с избранными товарами Favorite.jsx :

const Favorite = () => {
    const { favorite, onAddToFavorite } = React.useContext(AppContext);

    return (
        <>
            <HelmetProvider>
                <Helmet>
                    <title>Favorite Cars</title>
                    <meta name='description' content='Favorite Cars' />
                </Helmet>
                <div className='container'>
                    <div className={styles.favorite}>
                        <h2 className='mt-46'>Favorite Cars</h2>
                        <div className={styles.favoriteCard}>
                            {favorite.length <= 0 ? (
                                <div>You don't have favorite cars, add some..</div>
                            ) : (
                                favorite.map((item, index) => (
                                    <CarCard
                                        key={index}
                                        favorited={true}
                                        onFavorite={onAddToFavorite}
                                        {...item}
                                    />
                                ))
                            )}
                        </div>
                    </div>
                </div>
            </HelmetProvider>
        </>
    );
};

export default Favorite;

Ответы (0 шт):