[ToyProject-Todomate] ํˆฌ๋‘๋ฉ”์ดํŠธ ํด๋ก  ํ”„๋กœ์ ํŠธ 30

2022. 1. 16. 21:21ใ†WEB Dev/ToyProject

728x90


๐Ÿ”ท CloneTodo โ˜‘ - Todomate Clone Project  |  Team CloneMate

 

CloneTodo : ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ๋ž‘ํ•˜๋Š” ํˆฌ๋‘๋ฉ”์ดํŠธ๋ฅผ ํด๋ก ํ•˜์—ฌ ์›น ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ด๋ณด๋Š” ํ”„๋กœ์ ํŠธ

 


 

editGoal ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž

 

 

editGoal์€ ์ธ์ž๋กœ editGoalItem.item์„ ๋ฐ›์•„์˜จ๋‹ค. ์ฆ‰, ์ˆ˜์ •์„ ์œ„ํ•ด ์„ ํƒ๋œ title์˜ id์™€ ์ˆ˜์ •๋œ title์„ ์ธ์ž๋กœ ๋„˜๊ฒจ๋ฐ›๋Š”๋‹ค.

๊ทธ๋ž˜์„œ editGoal ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  e๋ฅผ ์ฐ์–ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์˜จ๋‹ค.

 

 

//๋ชฉํ‘œ ์ˆ˜์ • ํ•จ์ˆ˜
function editGoal(e){
    console.log('e : ', e)
}

 

 

 

 

ํ˜„์žฌ goal state์˜ id๊ฐ’๊ณผ ๋„˜์–ด์˜จ e์˜ id ๊ฐ’์ด ๊ฐ™์€ ๊ฒƒ์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

findIndex ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„๋ณด์ž.

 

thisItems ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์„œ goal state๋ฅผ ์นดํ”ผํ•ด์ฃผ๊ณ  idx ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ์„ ์–ธํ•ด์ค€๋‹ค.

idx ์—๋Š” id ๊ฐ’์„ ๋น„๊ตํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์กฐ๊ฑด์„ ์ž‘์„ฑํ•ด์ค€๋‹ค.

 

 

 

findIndex ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ

 

 

//๋ชฉํ‘œ ์ˆ˜์ • ํ•จ์ˆ˜
function editGoal(e){
    console.log('e : ', e)

    const thisItems = goal.items; // goal State ์›๋ณธ ์นดํ”ผ

    let idx  = thisItems.findIndex((item)=>{ return item.id === e.id })//findIndex ์‚ฌ์šฉ
    console.log('idx  : ' , idx );
}

 

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ˜์†”์— idx ์— ํ• ๋‹น๋œ ์ธ๋ฑ์Šค ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. 

 

 

 

 

์ด idx ๊ฐ’์„ ์ด์šฉํ•ด์„œ goalChange ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด state ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ–ˆ๋Š”๋ฐ...

 

 

goalChange(thisItems[idx].title = e.title); //goalChange๋ฅผ ์ด์šฉํ•ด state ๋ณ€๊ฒฝ

 

 

๊ฐ‘์ž๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ์—†๋˜ Goal์—์„œ ๋ Œ๋”๋ง ์˜ค๋ฅ˜๊ฐ€ ๋ง‰ ์ƒ๊ธฐ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

 

 

 

 

 

๊ฒ€์ƒ‰์„ ํ•ด๋ด๋„ ์˜คํƒ€ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ...

์œ„์˜ goalChange๋ฅผ ์‹คํ–‰ํ•˜๊ณ ๋ถ€ํ„ฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์œผ๋‹ˆ ๋‹น์—ฐํžˆ goalChange์—์„œ ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๊ณ ...

์นดํ”ผ๋ฅผ ํ•ด์„œ ๋‚ด์šฉ์„ ๋ฐ”๊พผ ๊ฒƒ์„ ํ• ๋‹นํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ €๋ ‡๊ฒŒ ํ•˜๋ฉด ์žฌ๋ Œ๋”๋ง ๋  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค๋Š” 

๋ฐ”๋กœ ๊ทธ state ์ง์ ‘ ๋ฐ”๊พธ๊ธฐ๋ฅผ ๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ๊ฒƒ์ผ๊นŒ?

 

 

 

goalChange๋กœ State ๋ณ€๊ฒฝํ•˜๊ธฐ

 

 

๋‹ค์‹œ ์ •์‹ ์„ ์ฐจ๋ฆฌ๊ณ  ใ… ใ… ใ… 

thisItems ์œผ๋กœ ๋ณต์‚ฌํ•œ state์˜ idx ๋ฒˆ์งธ์˜ title์„ e๋กœ ๋ฐ›์•„์˜จ title๋กœ ๋ณ€๊ฒฝํ•˜๊ณ , thisItems๋ฅผ goalChange๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค..

 

 

  //๋ชฉํ‘œ ์ˆ˜์ • ํ•จ์ˆ˜
  function editGoal(e){

    const thisItems = goal.items; // goal State ์›๋ณธ ์นดํ”ผ
    
    let idx  = thisItems.findIndex((item)=>{ return item.id === e.id })//findIndex ์‚ฌ์šฉ
    thisItems[idx].title = e.title;
    goalChange( {items : thisItems } ); //goalChange๋ฅผ ์ด์šฉํ•ด state ๋ณ€๊ฒฝ
    document.querySelector(`#ID-${idx}`).value = '';
    console.log('edit items :', goal.items)
  }

 

 

์ •์ƒ์ ์œผ๋กœ ์ˆ˜์ •์ด ๋œ๋‹ค...!!

 

 

 

 

 

 

๊ทธ๋Ÿฐ๋ฐ ์ˆ˜์ •๋˜์ž๋งˆ์ž ๋‘๋ฒˆ์งธ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ๋Š” ์ˆ˜์ •์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์ด ๋˜๋ฉด ์•„์ฃผ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•œ ๋ฒˆ ํ•ด์ฃผ๋˜์ง€

๋‚˜์ค‘์—๋Š” GoalForm๊ณผ GoalEditForm์„ ๋ชจ๋‘ ๋ณ„๋„์˜ ํŽ˜์ด์ง€๋กœ ๋งŒ๋“ค์–ด ์ค„ ์˜ˆ์ •์ด๋ผ 

๊ทธ๋•Œ๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด ์ˆ˜์ •ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

 

๋‚ด์ผ์€ GoalForm๊ณผ GoalEditForm ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ณ„๋„์˜ ํŽ˜์ด์ง€๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

 

 

 

์ ์  ๋ญ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค๊ณ  ๋Š๋ผ๋ฉด์„œ๋„ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ฆฌ๋‹ค๋Š” ์ƒ๊ฐ์— ์ž๊ดด๊ฐ์ด ๋ง‰ ๋“ค๊ณ  ์žˆ๋‹ค.

๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์†๋„์— ๋งž์ถฐ ๊ฐ€์•ผํ•˜๋Š”๋ฐ ๋ฆฌ์•กํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ์ดํ•ด๋˜์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฑธ๊นŒ ๋ˆˆ๋ฌผ๋‚˜๊ฒŒ ์–ด๋ ต๋„คใ… ใ… 

 

๋„ˆ๋ฌด ๋ฐ”๋ณด๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๊ธฐ๋Šฅ์ด ๋Œ์•„๊ฐ€๋‹ˆ ์–ผ์ถ” ํ•˜๋Š”๊ฑฐ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ ...

์ž๊พธ ๋‹ต๋‹ตํ•  ๋ฟ์ด๋‹ค ใ… ใ… ใ… ใ… ใ… 

 

 

 

 

 

728x90