
์ ๋ ฅํ๋ฉด, ์ ์ง๋๋๋ก ํ๋ ์์
function toggleDone() {
// setIsDone(!isDone);
fetch(`http://localhost:3001/words/${word.id}`, {
method: "PUT",
headers: {
"Content-Type": "application/json", //๋ณด๋ด๋ resource์ type(๋ฌธ์์ด, html, image๋ฑ ์ฌ๋ฌ๊ฐ์ง)
},
//์ค์ด์ ๋ณด๋ด๋ ์ ๋ณด๋ค์ ์
๋ ฅ
body: JSON.stringify({
...word,
isDone: !isDone,
}),
}).then((res) => {
if (res.ok) {
setIsDone(!isDone);
}
});
}
PUT ๋ฉ์๋ ์ฌ์ฉ
fetch๋ฅผ ์ฌ์ฉํ์ฌurl๋ถ๋ฌ์ค๊ธฐ- ์ฌ์ฉํ๋
method : 'PUT'header์ ๋ณด๋ด๋ resource์ type ์ ๋ ฅ ("Content-Type": "application/json")- body์ ์ํ๋ฅผ ์ด๋ป๊ฒ ๋ณํ์ํฌ ๊ฒ์ธ์ง ์จ์ค
์ด๋ JSONํ์ผ์ stringํ์์ผ๋ก ๋ฐ๊ฟJSON.stringify์ด์ฉ
...word๋ ๊ธฐ์กด์ ์๋ word db)- ๋ชจ๋๋ค ๋ถ๋ฌ์์ผ๋ฉด (
then) response๊ฐ ๋ง์ฝ ok(res.ok)์ด๋ฉด setIsDone์ ๋ฐ๊พธ์ด์ค(๋ฐ์ดํฐ๋ฅผ ๋ฐ๊พธ์ด์ค)
function del() {
if (window.confirm("์ญ์ ํ์๊ฒ ์ต๋๊น?")) {
fetch(`http://localhost:3001/words/${word.id}`, {
method: "DELETE",
});
}
}
DELETE ๋ฉ์๋ ์ฌ์ฉ
fetch๋ฅผ ์ฌ์ฉํ์ฌurl๋ถ๋ฌ์ค๊ธฐ- ์ฌ์ฉํ๋
method : 'DELETE'- ์ด๋, ํ์คํ ์ญ์ ํ ๊ฒ์ธ์ง ํ์ธ
window.confirm('ํ์ธ๋ฌธ๊ตฌ')- ๋ง๋ค๋ฉด DELETE๋ฉ์๋ ์ฌ์ฉ
- DELETE๋ ์ ํด์ค data๊ฐ ์์ผ๋ฏ๋ก
header๋body๊ฐ ํ์ ์์
์ญ์ ๋ฒํผ์ ๋๋ฅด๋ฉด, ๊ฒฝ๊ณ ๋ฌธ์ด ๋จ๊ณ ํ์ธ์ ๋๋ฅด๊ณ ์๋ก ๊ณ ์นจ์ ํ๋ฉด ์ญ์ ๋จ.
๋ฒํผ์ ๋๋ฅด๊ณ ์ญ์ ๋ฅผ ๋๋ฅด๋ฉด ์ค์ ๋จ์ด๋ ์ง์์ง ํ์ง๋ง,
ํ์ด์ง์๋ ์ด๋ค ๋ณํ๋ ์์ -> ์ญ์ ๋ ์ดํ ๋จ์ด ๋ฆฌ์คํธ๋ฅผ ๋ค์ ๊ทธ๋ ค์ฃผ์ง ์์
์ฆ, ๋จ์ด ๋ฆฌ์คํธ์๋ ๋จ์ ์์(์ฝ์์ฐฝ ํ์ธ)
์ด๋ null์ returnํด์ฃผ๋ฉด ์๋ฌด๊ฒ๋ ํํ๋์ง ์์ => ๋จ์ด ๋ฆฌ์คํธ์์ ์ง์์ง
๋จ์ด ๋ฆฌ์คํธ์์ ์ง์ฐ๊ธฐ(db)
Words.js
export default function Word({ word: w }) { const [word, setWord] = useState(w); function del() { if (window.confirm("์ญ์ ํ์๊ฒ ์ต๋๊น?")) { fetch(`http://localhost:3001/words/${word.id}`, { method: "DELETE", }).then((res) => { if (res.ok) { setWord({ id: 0 }); } }); } } if (word.id === 0) { return null; }
function Word({word : w }) { const [word, setWord] = useState(w);
๋ฐ์์จ props๋ฅผ w๋ผ๋ ์๋ก์ด ๋ณ์๋ก ๋ฐ์DELETE๋ฉ์๋๊ฐ ์ฑ๊ณตํ๋ฉด, word์ id๋ฅผ 0์ผ๋ก ์ค์ if (word.id === 0) { return null; }๋ก word์ id๊ฐ 0์ด ๋๋ฉด null ๋ฐํ- ๋ฐ๋ผ์... db์์ ์ญ์ ํ word๋ ์ฌ๋ผ์ง!!