[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] ๋ถ€ํŠธ์บ ํ”„ - [์†”๋กœ ํ”„๋กœ์ ํŠธ] ์•„๊ณ ๋ผ์Šคํ…Œ์ด์ธ  ๋งŒ๋“ค๊ธฐ 01

JiEunยท2023๋…„ 3์›” 9์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

์˜ค๋Š˜ ๋ถ€ํ„ฐ ๋‹ค์Œ๋‚  ๊ธˆ์š”์ผ ๊นŒ์ง€ ์†”๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง„ํ–‰๋œ๋‹ค.
์ฃผ์ œ๋Š” ๋‚˜๋งŒ์˜ ์•„๊ณ ๋ผ์Šคํ…Œ์ด์ธ  ๋งŒ๋“ค๊ธฐ๋กœ ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์„ ๋‚จ๊ธฐ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์—ญ๋Ÿ‰ ๋งŒํผ ์ž‘์—…ํ•ด์„œ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด๋‹ค.


๐Ÿ“์•„๊ณ ๋ผ์Šคํ…Œ์ด์ธ  ๋งŒ๋“ค๊ธฐ - 01

๐Ÿ’ป ๊ธฐ๋ณธ ๊ณผ์ œ

1. ๋”๋ฏธ ๋ฐ์ดํ„ฐ ํ™”๋ฉด์— ๋ณด์ด๋„๋ก ์ž‘์—…ํ•˜๊ธฐ

๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ๋…ธ์ถœ ์‹œํ‚ค๋Š”๊ฑด ๊ธฐ์กด ํŠœํˆ๋ฆฌ์–ผ๋งŒ ์ž˜ ๋”ฐ๋ผํ•˜๋ฉด ๊ธˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

  const avatarImg = document.createElement("img");
  avatarImg.src = obj.avatarUrl;
  avatarImg.alt = "avatar of" + obj.author;
  avatarWrapper.append(avatarImg);
  • ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก createElement๋กœ ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • ํ•ด๋‹น ์š”์†Œ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ์ถ”๊ฐ€ํ•œ ์š”์†Œ๋ฅผ ๋ถ€๋ชจ ์š”์†Œ์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค.(append)

2. ์ž…๋ ฅ ์ฐฝ์— ์ž‘์„ฑ ํ›„ button ํด๋ฆญ ์‹œ ์งˆ๋ฌธ ํ™”๋ฉด์— ๋ณด์ด๊ฒŒ ์ž‘์—…ํ•˜๊ธฐ

๋ฌธ์ œ๋Š” ์ž…๋ ฅ ์ฐฝ์— ์ž‘์„ฑ ํ›„ submit ํ•  ๊ฒฝ์šฐ ํ™”๋ฉด ๋…ธ์ถœ์ด์˜€๋‹ค.
์ดˆ๋ฐ˜์—” ๋”๋ฏธ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š” ์ค„ ์•Œ์•˜์œผ๋‚˜ ์ž์„ธํžˆ ๋ณด๋‹ˆ ๋ฐฐ์—ด์— ๊ฐ์‹ธ์ ธ ์žˆ๋Š” ๊ฐ์ฒด๋กœ ๋˜์–ด ์žˆ์—ˆ๋‹ค.

์ด๋•Œ ๋ฐฐ์—ด ์•ž์— ์ถ”๊ฐ€ํ•˜๋Š” ๋งค์„œ๋“œ unshift๋ฅผ ์ƒ๊ฐํ–ˆ๋‹ค.

//submit ํ•  ๊ฒฝ์šฐ
function agoraSubmit(event) {
  event.preventDefault();
  let nameValue = nameInput.value;
  let titValue = titInput.value;
  let questionValue = questionInput.value;

  let creatObj = {
    title: titValue,
    author: nameValue,
    bodyHTML: questionValue,
  }

  agoraStatesDiscussions.unshift({ ...creatObj });
};

agoraForm.addEventListener("submit", agoraSubmit);

console๋กœ ํ™•์ธํ•  ๋•Œ ๊ธฐ์กด ๋ฐ์ดํ„ฐ ๋ฐฐ์—ด์— ์ถ”๊ฐ€๋Š” ๋์ง€๋งŒ ์–ด์งธ์„ ์ง€
ํ™”๋ฉด์— ๋…ธ์ถœ๋˜์ง€ ์•Š์•˜๋‹ค.

๊ทธ๋Ÿฌ๋‹ค ์ƒ๊ฐํ•œ๊ฒŒ ์ƒ์„ฑ์€ ํ–ˆ์ง€๋งŒ ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์ถ”๊ฐ€๋ฅผ ์•ˆํ•œ๊ฒŒ ์•„๋‹๊นŒ ์‹ถ์—ˆ๋‹ค.
๋”๋ถˆ์–ด ๋‹ค๋ฅธ ํ‚ค์™€ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฑฐ ์•„๋‹๊นŒ ์‹ถ์–ด ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ๋‹ค.

//submit ํ•  ๊ฒฝ์šฐ
function agoraSubmit(event) {
  event.preventDefault();
  let nameValue = nameInput.value;
  let titValue = titInput.value;
  let questionValue = questionInput.value;

  let creatObj = {
    id: "new id",
    createdAt: new Date().toISOString(),
    title: titValue,
    url: "https://github.com/codestates-seb/agora-states-fe/discussions/45",
    author: nameValue,
    answer: null,
    bodyHTML: questionValue,
    avatarUrl:
      "https://avatars.githubusercontent.com/u/97888923?s=64&u=12b18768cdeebcf358b70051283a3ef57be6a20f&v=4",

  }

  agoraStatesDiscussions.unshift({ ...creatObj });
  const discussion = convertToDiscussion(creatObj);
  ul.prepend(discussion);

  //submit ์ดํ›„ ์ž…๋ ฅ ๊ฐ’ ์ดˆ๊ธฐํ™”
  nameInput.value = "";
  titInput.value = "";
  questionInput.value = "";
};



์ž…๋ ฅ ํ›„ button ํด๋ฆญ ์‹œ ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์— ์ž˜ ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

โœ”๏ธ ์•Œ๊ฒŒ ๋œ ๊ฒƒ

  • prepend() : ์š”์†Œ๋ฅผ ์„ ํƒํ•œ ์š”์†Œ ๋‚ด๋ถ€์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ถ”๊ฐ€
  • toISOString() : ๋‚ ์งœ๋ฅผ ๊ตญ์ œํ‘œ์ค€์‹œ ๊ธฐ์ค€ ISO 8601ํ˜•์‹์œผ๋กœ ํ‘œํ˜„ํ•œ ๋ฌธ์ž์—ด

๐Ÿ’ป ์‹ฌํ™” ๊ณผ์ œ

  • ๋‚ ์งœ ์‹œ๊ฐ„ ํ˜„์žฌ ์‹œ๊ฐ„๋Œ€๋กœ ๋ณด์ด๋„๋ก ํ•˜๊ธฐ
  • ํŽ˜์ด์ง€ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ถ”๊ฐ€ํ•˜๊ธฐ

ํ•ด๋‹น ๋‘๊ฐ€์ง€๋Š” ์•„์ง ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค...
๋‹ค์Œ ๋‚ ์ด์–ด์„œ ์ž‘์—…ํ•  ์˜ˆ์ •์œผ๋กœ ๊ทธ ๋•Œ ์ˆ˜์ •ํ•  ๊ฒƒ ์ด๋‹ค.


โœ๏ธ ๋งˆ์น˜๋ฉฐ

๋‚ด์ผ๊นŒ์ง€ ๋งˆ๋ฌด๋ฆฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.

์•„์ง ๊ฐˆ ๊ธธ์ด ๋ฉ€๋‹ค...
javascript์ž‘์—… ๋๋‚˜๋ฉด CSS ์ž‘์—…๋„ ์ง„ํ–‰๋˜์–ด์•ผํ•ด์„œ
javascript ์ž‘์—… ์ค‘ ๋ง‰ํž ๋•Œ ๋””์ž์ธ ์‹œ์•ˆ ์ž‘์—…์„ ํ•ด์ฃผ๋ฉฐ์„œ
๋จธ๋ฆฌ์†์„ ์‹ํ˜€ ์ฃผ๊ณ  ์žˆ๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

0๊ฐœ์˜ ๋Œ“๊ธ€