Skip to main content

Post Komponens (Tétel Előnézet)

A Post komponens egy előnézeti kártyát jelenít meg egy tételről vagy közösségi bejegyzésről. A célja, hogy rövid, informatív összefoglalót adjon, amely felkelti a felhasználó érdeklődését és a teljes tartalom megtekintésére ösztönöz.

Működés​

  • Fejléc: Megjeleníti a bejegyzés címét (title), amely egy linkként működik, és a tétel teljes oldalára (/tetelek/megtekint/[id]) navigál.
  • Metaadatok: A cím alatt megjeleníti a feltöltés dátumát (uploadDate) és a szerző felhasználónevét (author.username).
  • Tartalom előnézet: A bejegyzés tartalmának (content) első 10 sorát jeleníti meg a MarkdownRenderer komponens segítségével. Ez lehetővé teszi a formázott szöveg (pl. listák, kiemelések) helyes megjelenítését az előnézetben is.
  • Lábléc: Egy "Tovább a bejegyzéshez" linket tartalmaz, amely szintén a teljes bejegyzés oldalára mutat.

Propok​

NévTípusKötelezőLeírás
postPostIgenEgy Post objektum, amely a bejegyzés összes adatát tartalmazza.

Post objektum struktúrája​

KulcsTípusLeírás
idstringA bejegyzés egyedi azonosítója.
titlestringA bejegyzés címe.
contentstringA bejegyzés teljes, Markdown formátumú tartalma.
authorIdstringA szerző egyedi azonosítója.
visiblebooleanJelzi, hogy a bejegyzés látható-e a felhasználók számára.
attachmentsAttachment[]A bejegyzéshez csatolt fájlok listája.
uploadDatestringA feltöltés dátuma (ISO string formátumban).
updatedAtstringAz utolsó módosítás dátuma (ISO string formátumban).
authorAuthorA szerző adatait tartalmazó objektum.

Author objektum struktúrája​

KulcsTípusLeírás
idstringA szerző egyedi azonosítója.
usernamestringA szerző felhasználóneve.

Használati példa​

Az alábbi példa egy tételeket listázó oldalon történő használatot mutatja be.

import { useState, useEffect } from 'react';
import Post from '@/components/task-posts/post.component';
import { Post as PostType } from '@/components/task-posts/types/post'; // A típus importálása

export default function TopicsPage() {
const [posts, setPosts] = useState<PostType[]>([]);
const [loading, setLoading] = useState(true);

useEffect(() => {
// Szimulált adatbetöltés
const fetchPosts = async () => {
setLoading(true);
await new Promise(resolve => setTimeout(resolve, 1000));
setPosts([
{
id: "1",
title: "Antigoné - elemzés",
content: "Antigoné, Oidipusz király és Iokaszté leánya, a görög mitológia egyik legismertebb hősnője.\nAz ő története a kötelesség és a lelkiismeret konfliktusát mutatja be.\nTovábbi sorok...",
author: { id: "user1", username: "IrodalomTudor" },
uploadDate: new Date().toISOString(),
// ...további Post tulajdonságok
},
// ...további bejegyzések
]);
setLoading(false);
};
fetchPosts();
}, []);

if (loading) {
return <p>Tételek betöltése...</p>;
}

return (
<div>
<h1>Érettségi Tételek</h1>
<div>
{posts.map(post => (
<Post key={post.id} post={post} />
))}
</div>
</div>
);
}

Ez a komponens a tételek és közösségi bejegyzések listázásának központi eleme.