2022. 1. 13. 00:36ใWEB Dev/ToyProject
๐ท 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์ผ๋ก ๋ค์ ๊ฐ์ผํ๋๋ฐ...
์ด ๋ค์์ ์ด์ฉ์ง..!!
'WEB Dev > ToyProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 28 (0) | 2022.01.16 |
---|---|
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 27 (0) | 2022.01.15 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 25 (0) | 2022.01.13 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 24 (0) | 2022.01.11 |
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 23 (0) | 2022.01.06 |