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

2022. 1. 13. 00:36ใ†WEB Dev/ToyProject

728x90


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

 

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

 


 

 

ListItemText๋กœ ๊ตฌํ˜„๋œ ๋ชฉํ‘œ ํ…์ŠคํŠธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์œ„์˜ GoalForm์˜ TextField๋กœ ๋‹ค์‹œ title state๊ฐ€ ์ „๋‹ฌ๋˜๋„๋ก ํ•ด๋ณด์ž

 

 

 

๊ทธ๋Ÿฌ๋ ค๋ฉด ListItemText ํƒœ๊ทธ์— onClick์œผ๋กœ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ๋ฐ”์ธ๋”ฉ ์‹œ์ผœ์•ผ ํ•œ๋‹ค.

editEventHandler ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋ชฉํ‘œ ์‚ญ์ œ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ์ธ deleteEventHandler ๊ทผ์ฒ˜์— ๋งŒ๋“ค์–ด์ค€๋‹ค.

 

ํด๋ฆญํ•˜๋ฉด ์ฝ˜์†”์— ๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ์ž…๋ ฅ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด console.log('id : ', e.target.id)๊ณผ console.log('title : ' , e.target.value๋ฅผ ํ•จ์ˆ˜ ์•ˆ์— ๋„ฃ์–ด์ค€๋‹ค.

 

 

  //๋ชฉํ‘œ ์ˆ˜์ • ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ ํ•จ์ˆ˜
  function editEventHandler(e){
    console.log( 'id : ',  e.target.id);
    console.log( 'title : ',  e.target.value);
  }

 

๊ทธ๋ฆฌ๊ณ  ListItemText์—๋Š” value์™€ id ๋‘ ์†์„ฑ์„ ๋” ์ถ”๊ฐ€ํ•œ๋‹ค.

 

 

<ListItem className="goals-wrap" id={item.id} key={item.id}  > 
    <ListItemText id={item.id} value={item.title} onClick={editEventHandler}>{item.title} </ListItemText>
    <IconButton aria-label="Delete Todo" id={item.id} onClick={deleteEventHandler} sx={{ fontSize: '14px' }}>
        ์‚ญ์ œ
    </IconButton>
</ListItem>

 

๊ทธ๋ฆฌ๊ณ  ์ฝ˜์†”์„ ์ฐ์–ด๋ณด์ž

 

 

 

์ฒซ๋ฒˆ์งธ๋ฅผ ํด๋ฆญํ–ˆ๋Š”๋ฐ, ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ํด๋ฆญ ์ด๋ฒคํŠธ๋Š” ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค...

 

ListItemText๊ฐ€ span์œผ๋กœ ๋ณ€ํ™˜์ด ๋˜์–ด์„œ ๊ทธ๋Ÿฐ๊ฑธ๊นŒ? data-set์œผ๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

id์กฐ์ฐจ ์ฝ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์€ ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š๋Š”๋‹ค.

 

 

 

์‹ค์ œ ๊ตฌํ˜„๋œ DOM์œผ๋กœ ํ™•์ธํ•ด๋ณด๋‹ˆ span์ด ์•„๋‹Œ ์œ„์˜ div๋กœ ์ฐํžˆ๋Š”๋ฐ ListItem์— ์ˆ˜์ • ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์•ผ ํ•˜๋Š”๊ฑธ๊นŒ?

๊ทธ๋ ‡๊ฒŒ ๋ฐ”๊ฟ”๋ด๋„ id๊ฐ’์„ ์žก์ง€๋Š” ๋ชปํ–ˆ๋‹ค.

 

๋ฒ„ํŠผ ๊ฐ™์ด ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ... id๊ฐ’์„ e๋กœ ์ „๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฑฐ ๊ฐ™๋‹ค.

e๋กœ ์ฐ์–ด์„œ id๊ฐ’์ด ๋“ค์–ด์™”๋‚˜ ๋ณด์•˜๋Š”๋ฐ ์—†์Œ...

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ผ์ข…์˜ ๋ฒ„ํŠผ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ• ๊นŒ?

List ์•ˆ์—๋Š” block ์†์„ฑ๋งŒ ์•„๋‹ˆ๋ฉด ์–ด์ง€๊ฐ„ํ•œ ๊ฒƒ๋“ค์ด ๋“ค์–ด๊ฐ€๋„ ์ƒ๊ด€์€ ์—†์œผ๋‹ˆ๊นŒ...

 

๊ทธ๋ž˜์„œ ListItemText๋ฅผ Button์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋”๋‹ˆ ์˜ˆ์ƒ์ด ๋งž์•˜๋‹ค.

onClick์‹œ id๊ฐ’์„ ์žก์•„ ๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

<ListItem className="goals-wrap" id={item.id} key={idx} onClick={editEventHandler} > 
    <Button id={item.id}>{item.title} </Button>
    <Button aria-label="Delete Todo" id={item.id} onClick={deleteEventHandler} sx={{ fontSize: '14px' }}>
        ์‚ญ์ œ
    </Button>
</ListItem>

 

 

๋ญ”๊ฐ€ Button์ด๋ผ๋Š”๊ฒŒ ์ข€ ๋ถˆํŽธํ•œ ๋Š๋‚Œ์ด์ง€๋งŒ ๋‚˜์ค‘์— ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ฒŒ๋˜๋ฉด ์ข‹๊ฒ ๋„ค.

์ฒ˜์Œ์— ์‚ฌ์šฉํ–ˆ๋˜ InputBase๋„ ํ…Œ์ŠคํŠธ ํ•ด๋ณธ๋‹ค.

 

 <ListItem className="goals-wrap" id={item.id} key={idx} onClick={editEventHandler} > 
    <InputBase id={item.id} name={item.id} value={item.title} fullWidth></InputBase>
    <Button aria-label="Delete Todo" id={item.id} onClick={deleteEventHandler} sx={{ fontSize: '14px' }}>
        ์‚ญ์ œ
    </Button>
</ListItem>

 

 

 

ํด๋ฆญํ•˜๋ฉด id์™€ title ๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค~! 

๊ทธ๋Ÿผ ์ด ๊ฐ’์„ ๊ฐ€์ง€๊ณ  GoalForm์œผ๋กœ ๋‹ค์‹œ ๊ฐ€์•ผํ•˜๋Š”๋ฐ...

 

 

์ด ๋‹ค์Œ์€ ์–ด์ฉŒ์ง€..!!

 

 

 

 

 

 

 

 

 

 

728x90