11'use client'
22
3- import Link from 'next/link' ;
43import { getArticlesByUser } from '@/lib/api' ;
5- import { safeStringify } from '@/lib/utils' ;
64import { useState , useEffect } from 'react' ;
5+ import { safeStringify } from '@/lib/utils' ;
6+ import ArticleCard from '@/app/components/ArticleCard' ;
77
88export default function Home ( { params } : { params : Promise < { author : string } > } ) {
99 const [ userName , setUserName ] = useState < string > ( '' ) ;
@@ -19,39 +19,31 @@ export default function Home({ params }: { params: Promise<{ author: string }> }
1919 if ( userName ) {
2020 getArticlesByUser ( userName ) . then ( ( articles ) => {
2121 setArticles ( articles ) ;
22+ if ( ! Array . isArray ( articles ) ) {
23+ return < div > 記事が見つかりませんでした。</ div > ;
24+ }
25+ if ( articles . length === 0 ) {
26+ return < div > 記事がありません。</ div > ;
27+ }
2228 } ) ;
2329 }
30+
2431 } , [ userName ] ) ;
2532
26- if ( ! userName ) {
27- return < div > 読み込み中...</ div > ;
28- }
29-
30- if ( ! Array . isArray ( articles ) ) {
31- return < div > 記事が見つかりませんでした。</ div > ;
32- }
33-
34- if ( articles . length === 0 ) {
35- return < div > </ div >
36- // return <div>記事がありません。</div>;
37- }
33+ // if (!userName) {
34+ // return <div></div>;
35+ // }
3836
3937 return (
4038 < >
41- { articles . map ( ( article : any , index : number ) => (
42- < div key = { safeStringify ( article . _id ) || `article-${ index } ` }
43- className = "border-b border-gray-200 p-10" >
44- < div className = "text-sm font-bold text-gray-500" > { safeStringify ( article . _id ) } </ div >
45- < Link href = { `/articles/${ safeStringify ( article . _id ) } ` } >
46- < div className = "text-xl font-bold cursor-pointer hover:underline" > { safeStringify ( article . title ) } </ div >
47- </ Link >
48- < div className = "text-lg font-bold" > { safeStringify ( article . author ) } </ div >
49- < div className = "text-base font-bold" > { safeStringify ( article . created_at ) } </ div >
50- < div className = "border border-gray-200 p-5 m-2" >
51- < div className = "text-sm" > { safeStringify ( article . content ) } </ div >
39+ < div className = "mx-8 mt-8" >
40+ { userName && < h1 className = "text-2xl font-medium p-2 text-gray-600" > { safeStringify ( userName ) } の記事一覧</ h1 > }
41+ { articles . map ( ( article : any ) => (
42+ < div key = { safeStringify ( article . _id ) } className = "my-4" >
43+ < ArticleCard article = { article } showAuthor = { false } />
5244 </ div >
53- </ div >
54- ) ) }
45+ ) ) }
46+ </ div >
5547 </ >
5648 ) ;
5749}
0 commit comments