
Server Actions
- Next14에 정식적으로 도입
- input 같은거 value, onChange 다 지워도 됨! 대신, 유효성 검사를 위해 각 input에다가 required 붙여주고 name 속성 다 붙여주기
- input들을 태그로 감싸고 action={submit}넣어주기
- Server Component에서 Server Action 사용하기
<form action={submit}>
<input id="id" name="id" ... />
...
</form>
const submit = async(formData: FormData) => {
"use server"
if(!formData.get('id')){
return { message : 'no_id'};
}
if(!formData.get('name')){
return { message : 'no_name'};
}
if(!formData.get('password')){
return { message : 'no_password'};
}
if(!formData.get('image')){
return { message : 'no_image'};
}
const response = await fetch(`${NEXT_PUBLIC_BASE_URL}/api/users`, {
method: 'post',
body : formData,
credentials: 'include',
})
console.log(response.status);
if(response.status === 403)
{
return {message: 'user_exists'}
}
console.log(await response.json())
redirect('home')
}