작성자, 내용 등을 입력하여 버튼을 눌렀을 시 다음 화면에 해당 값들이 적용되야함. 주소는 해당 게시물의 ID가 나와야 함.
작성자, 제목, 타이틀 3가지 및 ID 주소 반영하기 과제.
**css는 수업 첫날 한거라 미숙함. 나중에 수정할 예정.
이렇게 나와야한다.
첫 페이지에서 필요한 기능
작업 순서.
import {useMutatiom, gql} from '@apollo/client'
import {useState} from 'react'
import {useRouter} from 'next/router'
export default function(){
return(
<>
//컨텐츠는 길어서 생략.
</>
)
}
gql 데이터 확인하기. 작성해야 하므로 mutation 조회.
gql 내용 할당.
const DRAGONBALL = gql`
mutation ZZZ ($writer:String, $password: String, $title: String!, $contents:String! ){
createBoard(
createBoardInput:
{
writer:$writer
password:$password
title:$title
contents:$contents
})
{
_id
writer
title
contents
}}
`
const [kakarot, UseKakarot] = useState(
writer:""
password:""
title:""
content:""
)
const buruma = useMutation(DRAGONBALL)
const router = useRouter()
function onChangeInput(event){
const begita = {
writer: kakarot.writer,
password:kakarot.password,
title: kakarot.title,
contents: kakarot.content
},[event.target.name]:event.target.value
}
//이부분 미흡하므로 여러번 작성해보자.
스프레드 사용하면
function onChangeInput(event){
const begita = {...kakarot,
[event.target.name]:event.target.value}
setKakarot(begita)
//입력한 값을 state사용한 setKakarot 적용.
async function onClickPost(){
try{
const result = await buruma({
variables:{
writer: kakarot.writer,
password:kakarot.password,
title: kakarot.title,
contents: kakarot.content
}
})
alert("성공")//이건 없어도됨
console.log(kakarot.id)
//안에 뭐가 들어가있는지 확인. 경로 확인을 위함.
router.push(`/board/${result.data.createBoard._id}`)
//반드시 먼저 경로 확인해보기.
}catch(error){
alert(error.message)
}
}
//이부분 미흡하므로 여러번 작성해보자.
첫페이지는 여기까지.