๊ธฐ๋ฅ ์ ์์ฒญํ๊ฑฐ๋ ๋ฒ๊ทธ๋ฅผ๋ณด๊ณ ํ์๊ฒ ์ต๋๊น?
๋ฒ๊ทธ๋ฅผ ์ ๊ณ ํ์ธ์. https://github.com/mozilla-services/react-jsonschema-form/issues/1153 ์์ ์ฒ์๋ณด๊ณ ๋จ
ํ์ฌ ํ๋์ ๋ฌด์์
๋๊น?
Autofill์ ํด๋น ํ๋๊ฐ React์์ ์ ์ด๋๋ ๊ตฌ์ฑ ์์ ์ธ ๊ฒฝ์ฐ ํ๋์ ๊ธฐ์กด ๊ฐ์ ๋ฎ์ด ์๋๋ค.
https://jsfiddle.net/epicfaace/9p17e2qx/21/ ์ฐธ์กฐ -์ด๋ฅผ ํ ์คํธํ๋ ค๋ฉด Chrome ์ต์ ์ "์ ์ฅ๋ ์ฃผ์"๋ฅผ ์ถ๊ฐํ์ญ์์ค.
์์๋๋ ๋์์ ๋ฌด์์
๋๊น?
์๋ ์์ฑ์ ๊ธฐ์กด ํ๋๋ฅผ ๋ฎ์ด ์ฐ์ง ์์ต๋๋ค. ์์๋๋ ๋์์ผ๋ก ์๋ํ๋ ์ผ๋ฐ HTML ํ์์ผ๋ก JSFiddle์ ๋ง๋ค์์ต๋๋ค.
https://jsfiddle.net/epicfaace/1my3f9n4/6/ ์ฐธ์กฐ
์ด๋ค ๋ฒ์ ์ React์ ์ด๋ค ๋ธ๋ผ์ฐ์ / OS๊ฐ์ด ๋ฌธ์ ์ ์ํฅ์ ๋ฐ์ต๋๊น?
๋ฐ์ 15.3.2
ํฌ๋กฌ 71.0.3578.98
"๊ฐ"์ํ (์ : ์ด๋ค ํฌ๋กฌ์ด ํ๋์ ๊ธฐ๋ณธ๊ฐ / ์๋ฆฌ ํ์ ์๋ก ๋ณด์ด๋์ง) ํ๋์ ์ฝ์ ๋ ๊ฐ๊ณผ ๊ฐ์ต๋๋ค. ๋ฆฌ ์กํธ๊ฐ ์ํ ๋ณ๊ฒฝ์ ๊ฐ ์ํ์ ์ ๋ฐ์ดํธ ํ ๋, ์ฐ๋ฆฌ๊ฐ ์ ๋ ฅํ๋ ๊ฒ๊ณผ ์ผ์นํ๋๋ก ๊ธฐ๋ณธ๊ฐ / ์๋ฆฌ ํ์์๋ฅผ ๊ธฐ์ ์ ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํฌ๋กฌ์์ด ํ๋๋ฅผ ๋ณ๊ฒฝ๋์ง ์์ ํ๋๋ก๋ณด๊ณ ์๋ ์ฑ์ฐ๊ธฐ์ ๋ฎ์ด ์๋๋ค.
์๋ฅผ ๋ค๋ฉด. ์ด๋ฆ ํ๋์ ๋ฌธ์์ด์ ์ ๋ ฅํ์ญ์์ค ... react๋ ์ ๋ ฅ ํ ๊ฐ์ผ๋ก ๊ฐ prop์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ฉ์ผ ์๋ ์์ฑ์ ์๋ํ๋ฉด ์ด๋ฆ ํ๋๋ฅผ ๋ฎ์ด ์๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฆ ํ๋์ ๋ฌธ์์ด์ ์ ๋ ฅ ํ ๋ค์ ์์๋ฅผ ๊ฒ์ฌํ๊ณ ์ด๋ฆ ๊ฐ prop์ ์ ๋ ฅ ํ ๋ฌธ์์ด์ด ์๋ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ํธ์ง ํ ๋ค์ ์ด๋ฉ์ผ ์๋ ์์ฑ์ ๋ค์ ์๋ํ์ญ์์ค. ์ด๋ฒ์๋ ๋ฎ์ด ์ฐ์ง ์์ต๋๋ค .. . ๊ฐ์ด "๊ธฐ๋ณธ๊ฐ"๊ฐ๊ณผ ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ onChange, autocomplete = this.state.value ์ ๋ฐ์ดํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํฌ๋กฌ์ ์ด๋ค ์ด์ ๋ก์ด ํ๋๋ฅผ ์๋ ์์ฑํ์ง ์๋๋ก ์ธ์ํฉ๋๋ค. (autocomplete = off๋ ์๋ํ์ง ์์ต๋๋ค. ์์์ ๋ฌธ์์ด์ด์ด์ผํฉ๋๋ค.) ๋น์ด ์๊ณ this.state.value๊ฐ ๋น์ด ์์ผ๋ฉด ์๋ ์ฑ์ฐ๊ธฐ๊ฐ ์์๋๋ก ํ๋์์ ๊ณ์ ์๋ํฉ๋๋ค.
^^ ๋ง์ต๋๋ค. ๋ค์์ onChange ์ ์์ ์ฌ์ฉํ ์์ ์์ ์ ๋๋ค. https://jsfiddle.net/epicfaace/9p17e2qx/29/
๋งค์ฐ ํฅ๋ฏธ๋ก์ด! ์ด๊ฒ์ ์ด์ ์ ์์ง ๋ชปํ๋ ์ ๋ ฅ์ ๋ํ ๊ฐ ์์ฑ / ์์ฑ์ ๋๊ธฐํํ๋ ๋ถ์์ฉ์ ๋๋ค (๊ฐ์ฌํฉ๋๋ค, @ mabeabe28).
value ์์ฑ์ด value ์์ฑ๊ณผ ๋์ผํ ๊ฒฝ์ฐ Chrome์ ์ ๋ ฅ์ด "๋ณ๊ฒฝ๋์ง ์์"๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ์๋ ์์ฑ ์์ ์ค์ value ์์ฑ์ ๋์ฒดํฉ๋๋ค.
๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์๋ ์ด๊ฒ์ด ์ฌ์ค์ธ์ง ๊ถ๊ธํฉ๋๋ค.
์๋ ์์ฑ ๋ฌธ์ ๋ฅผ ์ถ์ ํ๋ ๋ฒ๊ทธ๊ฐ ์์ด์ผํ๋ค๊ณ ์๊ฐํ์ง๋ง์ด ๋ฌธ์๊ฐ ๋ฌธ์ํ๋์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ๋ํ ๋ค์ดํฐ๋ธ ๋ฐ React ์ ๊ทผ ๋ฐฉ์์ ๋น๊ตํ๋ ์์ ์ ๋ง๋ค์์ต๋๋ค.
value ์์ฑ์ด value ์์ฑ๊ณผ ๋์ผํ ๊ฒฝ์ฐ Chrome์ ์ ๋ ฅ์ด "๋ณ๊ฒฝ๋์ง ์์"๊ฒ์ผ๋ก ๊ฐ์ฃผํ๊ณ ์๋ ์์ฑ ์์ ์ค์ value ์์ฑ์ ๋์ฒดํฉ๋๋ค.
์ด๊ฒ์ # 13525 ( "๊ฐ ์์ฑ์ ์ ๋ ฅ ๊ฐ ๋ฐ์ ์ค์ง")์ ์ํด ์ ์ด๋ ๋ถ๋ถ์ ์ผ๋ก ํด๊ฒฐ ๋ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
"๊ฐ"์ํ (์ : ์ด๋ค ํฌ๋กฌ์ด ํ๋์ ๊ธฐ๋ณธ๊ฐ / ์๋ฆฌ ํ์ ์๋ก ๋ณด์ด๋์ง) ํ๋์ ์ฝ์ ๋ ๊ฐ๊ณผ ๊ฐ์ต๋๋ค. ๋ฆฌ ์กํธ๊ฐ ์ํ ๋ณ๊ฒฝ์ ๊ฐ ์ํ์ ์ ๋ฐ์ดํธ ํ ๋, ์ฐ๋ฆฌ๊ฐ ์ ๋ ฅํ๋ ๊ฒ๊ณผ ์ผ์นํ๋๋ก ๊ธฐ๋ณธ๊ฐ / ์๋ฆฌ ํ์์๋ฅผ ๊ธฐ์ ์ ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ํฌ๋กฌ์์ด ํ๋๋ฅผ ๋ณ๊ฒฝ๋์ง ์์ ํ๋๋ก๋ณด๊ณ ์๋ ์ฑ์ฐ๊ธฐ์ ๋ฎ์ด ์๋๋ค.
์๋ฅผ ๋ค๋ฉด. ์ด๋ฆ ํ๋์ ๋ฌธ์์ด์ ์ ๋ ฅํ์ญ์์ค ... react๋ ์ ๋ ฅ ํ ๊ฐ์ผ๋ก ๊ฐ prop์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด๋ฉ์ผ ์๋ ์์ฑ์ ์๋ํ๋ฉด ์ด๋ฆ ํ๋๋ฅผ ๋ฎ์ด ์๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฆ ํ๋์ ๋ฌธ์์ด์ ์ ๋ ฅ ํ ๋ค์ ์์๋ฅผ ๊ฒ์ฌํ๊ณ ์ด๋ฆ ๊ฐ prop์ ์ ๋ ฅ ํ ๋ฌธ์์ด์ด ์๋ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ํธ์ง ํ ๋ค์ ์ด๋ฉ์ผ ์๋ ์์ฑ์ ๋ค์ ์๋ํ์ญ์์ค. ์ด๋ฒ์๋ ๋ฎ์ด ์ฐ์ง ์์ต๋๋ค .. . ๊ฐ์ด "๊ธฐ๋ณธ๊ฐ"๊ฐ๊ณผ ๋์ผํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ onChange, autocomplete = this.state.value ์ ๋ฐ์ดํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํฌ๋กฌ์ ์ด๋ค ์ด์ ๋ก์ด ํ๋๋ฅผ ์๋ ์์ฑํ์ง ์๋๋ก ์ธ์ํฉ๋๋ค. (autocomplete = off๋ ์๋ํ์ง ์์ต๋๋ค. ์์์ ๋ฌธ์์ด์ด์ด์ผํฉ๋๋ค.) ๋น์ด ์๊ณ this.state.value๊ฐ ๋น์ด ์์ผ๋ฉด ์๋ ์ฑ์ฐ๊ธฐ๊ฐ ์์๋๋ก ํ๋์์ ๊ณ์ ์๋ํฉ๋๋ค.