React: ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ ์„ ํƒ-์„ ํƒํ•œ ํ•ญ๋ชฉ (ํ•ญ๋ชฉ)์œผ๋กœ ์Šคํฌ๋กคํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 07์›” 17์ผ  ยท  12์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/react

๊ณค์ถฉ
react @ 15์—์„œ "value"๋˜๋Š” "defaultValue"๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ณ  ์„ ํƒํ•œ ์š”์†Œ๋ฅผ๋ณด๊ธฐ๋กœ ์Šคํฌ๋กค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://codesandbox.io/s/6vx637r10n

๊ทธ๋Ÿฌ๋‚˜ react @ 16 ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
https://codesandbox.io/s/7jqqz3zmo1

DOM Bug good first issue (taken)

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ์›์น˜ ์•Š๋Š” ๋™์ž‘์˜ ์›์ธ์„ ํŒŒ์•…ํ•œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ ์ ˆํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์กฐ์‚ฌํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ฌด๋„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด์ด ๋ฌธ์ œ๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์•ฝ์†์„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  12 ๋Œ“๊ธ€

ํฅ๋ฏธ ๋กญ๋‹ค! React 16.0์—์„œ ์„ ํƒํ•œ ํ•ญ๋ชฉ์ด ํ• ๋‹น ๋œ ๋ฐฉ์‹์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํŒŒ์ผ์„ ์‚ดํŽด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

-https :

-https :

์Šฌํ”„๊ฒŒ๋„ ๊ทธ๋‹ค์ง€ ํฐ ์ฐจ์ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. (๋‚ด ๋„์›€์ด ๋ถ€์กฑํ•ด์„œ ๋ฏธ์•ˆํ•˜์ง€๋งŒ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐ ๋ ์ง€ ๋˜๋Š” ๋‚ด๊ฐ€ ์ž˜๋ชป๋œ ๊ณณ์„๋ณด๊ณ  ์žˆ์—ˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.)

๊ฑฑ์ • ๋งˆ! ๊ทธ๊ฒƒ๋“ค์€ ๋‚ด๊ฐ€ ๋ณด๋Š” ์ฒซ ๋ฒˆ์งธ ์žฅ์†Œ์ด๊ธฐ๋„ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์ฐจ์ด์ ์€ React 16.x๊ฐ€ defaultSelected ๋’ค์— selected defaultSelected ํ• ๋‹นํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/facebook/react/blob/master/packages/react-dom/src/client/ReactDOMFiberSelect.js#L95

์ด๊ฒƒ์ด React๋ฅผ ๋˜์ง€๊ณ  ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์ง์ ‘ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์—†์ง€๋งŒ ์ค‘๋‹จ ์ ์„ ์„ค์ •ํ•˜๊ณ ์ด ๋ฃจํ”„๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ์Šคํฌ๋กค์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” Nathan, ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•ด ์™”์œผ๋ฉฐ react 15.6.2 ๋ฐ 16.3.2๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ๋ช‡ ๊ฐ€์ง€ ์ค‘๋‹จ ์ ์œผ๋กœ ์ถ”์  ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

updateOptions

"select"๊ฐ€์žˆ๋Š” ์˜ต์…˜ ์†์„ฑ ์ค‘ ํ•˜๋‚˜๋ฅผ true (์ข‹์Œ)๋กœ ์„ค์ •ํ•˜๊ณ  selectedIndex๋„ 4 (์ข‹์Œ)๋กœ ์„ค์ •ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—์„œ ์š”์†Œ๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ธ์‡„๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ defaultSelected ์ „์— selected defaultSelected ํ• ๋‹นํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์— ์ฐจ์ด๊ฐ€ ์—†์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๋””๋ฒ„๊ฑฐ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ–ˆ์„ ๋•Œ selected ๋ฐ defaultSelected (์‚ฌ์šฉํ•˜๋Š” ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ„) ๋ชจ๋‘ ์ ์ ˆํ•œ <option> DOM ์š”์†Œ์— true ์†์„ฑ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. .

16.3.2 ์˜ˆ์ œ์—์„œ๋Š” ์ „๋‹ฌ ๋œ ๊ฐ’์„ ์—ฌ์ „ํžˆ ์„ ํƒํ•˜๊ณ  ์Šคํฌ๋กคํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ Œ๋”๋Ÿฌ์—์„œ ํ•ด๋‹น ๊ฐ’ ์†์„ฑ์ด ํ‰๊ฐ€ / ํ™•์ธ๋˜๊ณ  ๋™์ž‘์ด ๋ณ€๊ฒฝ๋˜๋Š” ๋‹ค๋ฅธ ๊ณณ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ฐ”๋Ÿฌ ๋ณด์•˜์ง€๋งŒ ํŒŒ์‹ฑ ํ•  ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋„์›€์ด๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ @ kre0n ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ์ฒ˜์Œ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ•œ React ๋นŒ๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์ž‘์€ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด codesandbox์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ React์˜ ๊ฐ ๋ฒ„์ „์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๊ด€์ฐฐ ํ•œ ๋ฐ”์— ๋”ฐ๋ฅด๋ฉด 16.0.0 ๋ฆด๋ฆฌ์Šค ์ดํ›„์˜ ๋ชจ๋“  ์‹œ์ผฐ ์Šต๋‹ˆ๋‹ค. 15.6.2 ๊ฐ€ ์ž‘๋™ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ฒ˜์Œ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€ 16.0.0-alpha ์—์„œ

์„ ํƒ์ด ๋นŒ๋“œ 16.0.0-alpha.3 ์˜ ์„ ํƒ ์š”์†Œ์— ์ œ๊ณต๋œ '๊ฐ’'์œผ๋กœ ์Šคํฌ๋กค์„ ๋ฉˆ์ถ˜ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ๋นŒ๋“œ์—์„œ ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ ์‹คํŒจ ์ง€์ ์ด ์–ด๋–ค ์‹ ์œผ๋กœ๋“  ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋Ÿฌํ•œ ์›์น˜ ์•Š๋Š” ๋™์ž‘์˜ ์›์ธ์„ ํŒŒ์•…ํ•œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ ์ ˆํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์กฐ์‚ฌํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ๋” ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ฌด๋„ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด์ด ๋ฌธ์ œ๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์•ฝ์†์„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ์ •๋ณด. ์ œ๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ๋ฌธ์ œ๊ฐ€ ์ข€ ๋” ๋ณต์žกํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋Š”์ด ๋™์ž‘์ด ๋ฆฌ ์•กํŠธ ํŒŒ์ด๋ฒ„ ์•„ํ‚คํ…์ฒ˜์— ๋„์ž…๋˜์—ˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆด์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ๊ณ„์† ๊ณ ์ณ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ „์— ๊ตฌํ˜„ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งŽ์€ ์—ฌํ–‰์„ํ•˜๊ณ ์žˆ๋‹ค. :) ์ด๊ฒƒ์€ ์ •๋ง ์–ด๋ ค์šด ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

@segoddnja ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋‹น์‹ ์—๊ฒŒ ํ• ๋‹น ํ•  ๊ฒƒ์ด์ง€๋งŒ ์ด๊ฒƒ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์ง€ ์•Š์•„๋„๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์„ค์„ ์ฐพ์•„ ๋‚ด๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•จ๊ป˜ ๋…ธ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋กค์„ ๋ฉˆ์ถœ ์ˆ˜์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋ฏธ๋ฆฌ ์„ ํƒ ํ•ญ๋ชฉ์— ๋ฐœ์ƒํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋กค ์ค‘์ง€๋กœ ์ด์–ด์งˆ ์ˆ˜์žˆ๋Š” ์†์„ฑ / ์†์„ฑ ํ• ๋‹น ์ˆœ์„œ๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ํฅ๋ฏธ๋กœ์šด ํ˜„์ƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๊ฐ€์ • ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

https://codepen.io/nhunzaker/pen/vaZxvE

  1. 6 ๊ฐ€์ง€ ์˜ต์…˜ ์ œ๊ณต
  2. ์ฒซ ๋ฒˆ์งธ ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์—ฌ์„ฏ ๋ฒˆ์งธ ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ์ฒซ ๋ฒˆ์งธ ์˜ต์…˜์„ ์„ ํƒ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

์—ฌ์„ฏ ๋ฒˆ์งธ ์˜ต์…˜ ๋งŒ ์„ ํƒํ•œ ๊ฒฝ์šฐ์—๋„ ์Šคํฌ๋กค์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ฒซ ๋ฒˆ์งธ ์˜ต์…˜์— ์ดˆ์ ์„ ๋งž ์ถฅ๋‹ˆ ๋‹ค.

์–ด์จŒ๋“  Chrome์€ _unassigned๊ฐ€ ์•„๋‹Œ _assigned_ ์ผ ๋•Œ ์ฒ˜์Œ ์„ ํƒํ•œ ๊ฐ’์œผ๋กœ ๋งŒ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@nhunzaker ๋„ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์„ ํƒ๋œ ์†์„ฑ์ด true ์ธ ์ฒซ ๋ฒˆ์งธ ์˜ต์…˜์œผ๋กœ ์Šคํฌ๋กคํ•ฉ๋‹ˆ๋‹ค. ๋” ์ด์ƒ ๋ณ€๊ฒฝํ•ด๋„ ์Šคํฌ๋กค์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ง€๊ธˆ ๋ฐœ๊ฒฌ ํ•œ ๊ฒƒ. React๋Š” ๋ฒ ์–ด selest ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์—ฌ๊ธฐ์— ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ ์–ด select ๊ฐ€ multipe=false ์ด๋ฏ€๋กœ ์ฒซ ๋ฒˆ์งธ ์ถ”๊ฐ€ ์˜ต์…˜์€ ์ž๋™์œผ๋กœ selected=true ์–ป์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์ค‘ ๋ชจ๋“œ๋กœ ๋” ์ „ํ™˜ํ•˜๊ณ  ์˜ต์…˜ ์„ ํƒ์„ ์—…๋ฐ์ดํŠธํ•ด๋„ ์Šคํฌ๋กค๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— multiple ์†์„ฑ ๊ฐ’์„ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰