This commit is contained in:
goblinrf 2023-12-16 19:26:16 +03:00
parent b97cf409f6
commit 7d736c10b5
6 changed files with 115 additions and 1 deletions

View File

@ -0,0 +1,46 @@
// cards_api.js
// URL вашего JSON-сервера с данными о новостях
const API_URL = 'http://localhost:8081/lines';
// Функция для получения всех новостей
export const getAllLines = async () => {
try {
const response = await fetch(API_URL);
const data = await response.json();
return data;
} catch (error) {
console.error('Ошибка при получении новостей:', error);
throw error;
}
};
// Функция для получения одной новости по id
export const getLine = async (id) => {
try {
const response = await fetch(`${API_URL}/${id}`);
const data = await response.json();
return data;
} catch (error) {
console.error('Ошибка при получении новости:', error);
throw error;
}
};
// Функция для обновления новости
export const updateLine = async (id, newData) => {
try {
const response = await fetch(`${API_URL}/${id}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(newData),
});
const data = await response.json();
return data;
} catch (error) {
console.error('Ошибка при обновлении новости:', error);
throw error;
}
};

View File

@ -9,6 +9,7 @@ import Page1 from './pages/Page1.jsx';
import Page2 from './pages/Page2.jsx';
import Page3 from './pages/Page3.jsx';
import Page4 from './pages/Page4.jsx';
import NewsPage from './pages/NewsPage.jsx';
import Page5 from './pages/Page5.jsx';
import Page6 from './pages/Page6.jsx';
@ -34,6 +35,11 @@ const routes = [
element: <Page4 />,
title: 'Мир спорта',
},
{
path: '/NewsPage',
element: <NewsPage />,
title: 'Новости',
},
{
path: '/page5',
element: <Page5 />,

View File

@ -0,0 +1,50 @@
// NewsPage.jsx
import React, { useState, useEffect } from 'react';
import { getAllLines } from '../components/api/cards_api';
const NewsPage = () => {
const [news, setNews] = useState([]);
useEffect(() => {
// Получаем все новости при загрузке компонента
getAllNews();
}, []);
const getAllNews = async () => {
try {
// Получаем данные с сервера
const data = await getAllLines();
setNews(data); // Обновляем состояние новостей
} catch (error) {
console.error('Ошибка получения новостей:', error);
}
};
// Функция для создания карточки на основе данных новости
const createNewsCard = (newsData) => {
return (
<div className="col-md-4" key={newsData.id}>
<div className="card news-card">
<img src={newsData.image || 'https://via.placeholder.com/200'} className="card-img-top" alt="Изображение новости" />
<div className="card-body">
<h5 className="card-title">{newsData.price}</h5>
<p className="card-text">{newsData.count}</p>
<p className="card-text">{newsData.sum}</p>
</div>
</div>
</div>
);
};
return (
<div className="container">
<div className="row" id="news-cards-container">
{news.map((newsItem) => createNewsCard(newsItem))}
</div>
</div>
);
};
export default NewsPage;

View File

@ -90,8 +90,8 @@ const Page2 = () => {
</div>
<div className="col-md-4">
<div className="p-2">
<img src={ulstuLogo} alt="Картинка" className="w-100" />
<img src="./src/assets/image_from_second_1.jpg" alt="Картинка" className="d-block mt-5 w-100" />
<img src="./src/assets/image_from_second_2.jpg" alt="Картинка" className="d-block mt-5 w-100" />
</div>
</div>
</div>

View File

@ -2,6 +2,7 @@ import { useForm } from 'react-hook-form';
import { useState,useEffect } from 'react';
import axios from 'axios';
import { useDispatch } from 'react-redux';
import './button.css';
const Page5 = () => {
const { register, handleSubmit } = useForm();

11
Lab5/src/pages/button.css Normal file
View File

@ -0,0 +1,11 @@
.btn-purple {
background-color: #570257; /* Цвет фона кнопки */
color: #ffffff; /* Цвет текста на кнопке */
/* Другие стили */
}
.btn-purple:hover {
background-color: #450045; /* Цвет фона кнопки при наведении */
color: #ffffff; /* Цвет текста на кнопке при наведении */
/* Другие стили при наведении */
}