๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋ฐ˜์‘ํ˜•

React32

[React] map ํ•จ์ˆ˜ ์ ์šฉ์‹œ key props๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์ด์œ  React์—์„œ map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ Œ๋”๋ง์—” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ console ์ฐฝ์— ์ด๋ ‡๊ฒŒ ๋œฐ ๋•Œ๊ฐ€ ์žˆ๋‹ค. mappingํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋งˆ๋‹ค ๊ณ ์œ ํ•œ key ๊ฐ’์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์„ ์ƒ๋žตํ•˜๋ฉด ์ €๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค! ๊ทธ๋ž˜์„œ โญ list ๋‚ด์˜ ๊ฐ child์—๋Š” ๊ณ ์œ ํ•œ key ๊ฐ’์ด ์žˆ์–ด์•ผํ•œ๋‹ค. โญ ๐Ÿ”ฅ์™œ key ๊ฐ’์„ ์ค˜์•ผํ• ๊นŒ? React๋Š” ๋ Œ๋”๋ง ํ•  ๋•Œ ๊ธฐ์กด ๋ฐฐ์—ด๊ณผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋น„๊ตํ•ด์„œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๋‹ค์‹œ ๋ Œ๋”๋งํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์š”์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„๋•Œ ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋ง ํ•˜๊ธฐ ์œ„ํ•ด ์š”์†Œ ๊ณ ์œ ์˜ key ๊ฐ’์„ ์ค€๋‹ค. ์ฐธ๊ณ  ์‚ฌ์ดํŠธ โ–ถ ๋ฆฌ์ŠคํŠธ์™€ Key - React 2021. 11. 18.
HTML, CSS ์ฝ”๋“œ๋ฅผ React๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์ฃผ์˜ํ•  ์  ๐Ÿณ ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๋• , ํƒœ๊ทธ๋กœ ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๊ฐ์‹ธ์ค„ ๊ฒƒ! ex) import React from 'react'; class Login extends React.Component { return ( ์•ˆ๋…•ํ•˜์„ธ์š” ์•ˆ๋…•ํžˆ๊ณ„์„ธ์š” ); } ๐Ÿณ Self Closing Tag ๊ผญ ๋‹ซ์•„ ์ค„ ๊ฒƒ! , , , , , ์•ˆ ๋‹ซ์œผ๋ฉด ์˜ค๋ฅ˜ ๋– ์š” ๐Ÿณ ์ง ๋งž๋Š”์ง€ ํ™•์ธ ํ•  ๊ฒƒ! ๋ณธ์ธ์€ ์ง ์•ˆ๋งž์•„์„œ ํ•œ์ฐธ ์‚ฝ์งˆํ–ˆ์Œใ…  ๐Ÿณ import ๊ฒฝ๋กœ ํ™•์ธ ํ•  ๊ฒƒ! CSS ํŒŒ์ผ์ด๋‚˜ img ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ • ์ž˜๋ชปํ•˜๋ฉด ์ ์šฉ์ด ์•ˆ๋ผ์š”ใ…Žใ…Ž... 2021. 11. 17.
[React] e.preventDefault(); ๐Ÿช“ ์ˆ˜์ • ์ „ ์ฝ”๋“œ writeComment = e => { this.setState({ comment: e.target.value, }); }; addComment = e => { โญ๏ธ e.preventDefault(); const { commentList, comment } = this.state; this.setState({ commentList: [ ...commentList, { id: commentList.length + 1, userName: 'zzz_yk', content: comment, }, ], comment: '', }); }; enterKey = e => { if (e.key === 'Enter') { this.addComment(); } }; ๊ฒŒ์‹œ ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ๋Œ“๊ธ€์„ ์“ฐ๊ณ  Enter.. 2021. 11. 16.
[React] Each child in a list should have a unique key prop. ๋ฆฌ์•กํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํ•œ๋ฒˆ์ฏค์€ ๋ณด์…จ์„ ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€... ๋ผ๊ณ  ํ•œ๋‹ค๐Ÿ˜ฅ map ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ–ˆ์„๋•Œ(์†”์งํžˆ ์ง€๊ธˆ๋„ ๋ถ€์กฑํ•จใ…Žใ…Ž) ๋ฐฐ์šด๊ฑธ ์ ์šฉํ•ด๋ณด๋Š๋ผ ์—ด์‹ฌํžˆ ์‚ฝ์งˆํ•˜๊ณ  ์žˆ์—ˆ์Œ.. ๐Ÿช“ key ๊ฐ’์„ ์ฃผ์ง€ ์•Š์€ Comment.js import React from 'react'; import './Comment.scss'; class Comment extends React.Component { render() { const { commentList } = this.props; return ( {commentList.map(comment => { return ( // โญ๏ธ key ๊ฐ’์ด ์—†์Œ!! {comment.userName} {comment.content} ); })} ); } } export default Co.. 2021. 11. 16.
[React] Invalid DOM property `class`. Did you mean `className`? React์—์„  className์œผ๋กœ ์จ์•ผํ•˜๋Š”๋ฐ class๋กœ ํ•˜๋ฉด ์ €๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์•ˆ์ข‹์€ ์˜ˆ์‹œ ๐Ÿ‘‡๐Ÿป ์ข‹์€ ์˜ˆ์‹œ ๐Ÿ‘‡๐Ÿป 2021. 11. 16.
์ฃผ์„ ์‚ฌ์šฉ๋ฒ• ๐ŸฅŠ React ์ฝ”๋“œ ์ฃผ์„ ํ•œ ์ค„ ์ฃผ์„ : // ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„ : /* */ Javascript์™€ ๋™์ผํ•จ! // ํ•œ ์ค„ ์ฃผ์„ componentDidMount() { // console.log("hello world"); return; }; // ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„ componentDidMount() { /* console.log("hello world"); return; */ }; 2021. 11. 16.
๋ฐ˜์‘ํ˜•