React: ๋ฒ„๊ทธ : ์œ ํ˜• ๋ณ€๊ฒฝ ํ›„ ์ž…๋ ฅ minLength๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2020๋…„ 11์›” 05์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/react

minLength 8์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ ์œ ํ˜•์„ ์ž…๋ ฅํ–ˆ์œผ๋ฉฐ ์œ ํ˜•์„ ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ํ† ๊ธ€ (๋น„๋ฐ€๋ฒˆํ˜ธ ํ† ๊ธ€)์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธธ์ด <8๋กœ ์ž…๋ ฅํ•˜๊ณ  ์ œ์ถœ์„ ๋ˆ„๋ฅด๋ฉด ์ œ์ถœ์ด ๋ฐฉ์ง€๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•”ํ˜ธ๋ฅผ ํ† ๊ธ€ํ•˜์—ฌ ์œ ํ˜•์„ ํ…์ŠคํŠธ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์–‘์‹์„ ์ œ์ถœํ•˜๋ฉด ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. btw i useRef () ์‚ฌ์šฉ

๋ฐ˜์‘ ๋ฒ„์ „ :
๋ฐ˜์‘ : ^ 17.0.1
๋ฐ˜์‘ ๋” : ^ 17.0.1

์žฌํ˜„ ๋‹จ๊ณ„

  1. ์œ ํ˜• ๋ฌธ์ž <minLength
  2. ์–‘์‹ ์ œ์ถœ
  3. ์–‘์‹ ์œ ํ˜• ์ „ํ™˜
  4. ์–‘์‹ ์ œ์ถœ

์ฝ”๋“œ ์˜ˆ์ œ ๋งํฌ : DEMO

ํ˜„์žฌ ํ–‰๋™

์–‘์‹์€ minLength ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ์—๋„ ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

minLength ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ์–‘์‹์ด ์ œ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Safari DOM Bug

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

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ž…๋ ฅ์ด ์›๋ž˜ ์ƒํƒœ์ด๋ฉด ๋ชจ๋“  ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์–‘์‹์„ ์ œ์ถœํ•˜๋ฉด minLength ๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ œ์•ฝ ์กฐ๊ฑด์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ์ž…๋ ฅ ํ•œ ๊ฒฝ์šฐ Safari๋Š” ์–‘์‹์„ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ type ๋ณ€๊ฒฝ๋˜๋ฉด Safari๋Š” ์ž…๋ ฅ์„ ์›๋ž˜ ์ƒํƒœ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž…๋ ฅ์ด ์™„๋ฃŒ๋œ ํ›„ type ๋ณ€๊ฒฝ๋˜๋ฉด ์ž˜๋ชป๋œ ๊ฐ’์ด ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” React๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ์•„๋‹ˆ๋ฉด Safari๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค:
๋ฐ˜์‘์—†์ด ์ตœ์†Œํ•œ์˜ ์žฌํ˜„ : https://codesandbox.io/s/condescending-bhabha-n4374?file=/src/index.js

์ด ๋™์ž‘์ด ํ•„์š”ํ•˜๋ฉด Safari์— ๋ฒ„๊ทธ๋ฅผ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

์‹ ๊ณ  ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฐ๋ชจ๋Š” 8์ด ์•„๋‹Œ minLength="3" ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    2 ์ž ์ด์ƒ ์ž…๋ ฅํ•˜๋ฉด 8 ์ž ๋ฏธ๋งŒ์œผ๋กœ ์ž…๋ ฅํ•ด๋„๋ฉ๋‹ˆ๋‹ค.
  2. minLength ๋Š” IE 11์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://caniuse.com/input-minlength
    Chrome 85์—์„œ ๋ฐ๋ชจ๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ 2 ์ž ๋ฏธ๋งŒ์œผ๋กœ ์ž…๋ ฅํ•˜๋ฉด ์ œ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ๋•Œ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉ ํ–ˆ์Šต๋‹ˆ๊นŒ?

Mac OS 10.14.6 ๋ฐ ๋ธŒ๋ผ์šฐ์ € Safari 13.0.5 (14608.5.12)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์žŠ์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ† ๊ธ€ ํ›„ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

btw, Chrome 86.0.4240.183์œผ๋กœ ์‹œ๋„ํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌํŒŒ๋ฆฌ์—์„œ๋งŒ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”

์žฌํ˜„ ๋‹จ๊ณ„ 1

  1. ์œ ํ˜• ๋ฌธ์ž <minLength
  2. ์–‘์‹ ์ œ์ถœ
  3. ์–‘์‹ ์œ ํ˜• ์ „ํ™˜
  4. ํ† ๊ธ€ ํ›„ ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค
  5. ์–‘์‹ ์ œ์ถœ
  6. ์–‘์‹์ด ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค

์žฌํ˜„ ๋‹จ๊ณ„ 2

  1. ์œ ํ˜• ๋ฌธ์ž <minLength
  2. ์–‘์‹ ์ œ์ถœ
  3. ์–‘์‹ ์œ ํ˜• ์ „ํ™˜
  4. ํ† ๊ธ€ ํ›„ ์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅ
  5. ์–‘์‹ ์ œ์ถœ
  6. ์–‘์‹์ด ์ œ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ž…๋ ฅ์ด ์›๋ž˜ ์ƒํƒœ์ด๋ฉด ๋ชจ๋“  ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์–‘์‹์„ ์ œ์ถœํ•˜๋ฉด minLength ๊ฐ€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ œ์•ฝ ์กฐ๊ฑด์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ์ž…๋ ฅ ํ•œ ๊ฒฝ์šฐ Safari๋Š” ์–‘์‹์„ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ type ๋ณ€๊ฒฝ๋˜๋ฉด Safari๋Š” ์ž…๋ ฅ์„ ์›๋ž˜ ์ƒํƒœ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž…๋ ฅ์ด ์™„๋ฃŒ๋œ ํ›„ type ๋ณ€๊ฒฝ๋˜๋ฉด ์ž˜๋ชป๋œ ๊ฐ’์ด ์ œ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” React๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ์•„๋‹ˆ๋ฉด Safari๊ฐ€์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘ํ•˜๋‹ค:
๋ฐ˜์‘์—†์ด ์ตœ์†Œํ•œ์˜ ์žฌํ˜„ : https://codesandbox.io/s/condescending-bhabha-n4374?file=/src/index.js

์ด ๋™์ž‘์ด ํ•„์š”ํ•˜๋ฉด Safari์— ๋ฒ„๊ทธ๋ฅผ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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