ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ToyProject-Todomate] ํˆฌ๋‘๋ฉ”์ดํŠธ ํด๋ก  ํ”„๋กœ์ ํŠธ 26
    WEB Dev/ToyProject 2022. 1. 13. 00:36
    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

    ๋Œ“๊ธ€

Designed by Tistory.