멈멈-토이프로젝트(next.js)2
컴포넌트에서 이미지를 출력
순9
2024. 7. 24. 16:09
728x90
1. 클라이언트 컴포넌트에서 이미지 출력 하기
https://nextjs.org/docs/pages/building-your-application/data-fetching/client-side
- 함수만 모아 놓은 파일.ts
import { createClient } from "@/utils/supabase/client";
const supabase = createClient();
export async function fetchImageUrl(){
const { data } = await supabase.storage
.from("img")
.getPublicUrl("select/test1.png");
return data.publicUrl;
};
- 클라이언트 컴포넌트(페이지 라우터일 경우swr사용)
'use client';
import useSWR from 'swr'
import { fetchImageUrl } from '@/lib/function';
export default function LoginPageImg() {
const fetcher = () => fetchImageUrl();
const { data, error } = useSWR('image', fetcher);
if (error) return <div>Failed to load</div>
if (!data) return <div>Loading...</div>
return (
<div>
<img src={data} alt='이미지'/>
</div>
)
}
클라이언트 컴포넌트에서 이미지를 출력 했는데 서버컴포넌트로 변경 했음
클라이언트 컴포넌트가 많으면 nextjs를 한 의미가 없는거 같아서
2. 서버 컴포넌트
형식1
- 함수만 모아 놓은 파일.ts 동일
import { fetchImageUrl } from '@/lib/function';
export default async function LoginPageImg() {
const fetcher = await fetchImageUrl();
return (
<div>
<img src={fetcher} alt='이미지'/>
</div>
)
}
형식2
- https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props