[์น ์ ๊ทผ์ฑ] React-helmet ์จ์ html lang ์์ฑ ๋ฐ๊พธ๊ธฐ
WHY? html lang ์์ฑ์ ์ ๊ฒฝ์จ์ผ ํ๋ ์ด์
์น ์ ๊ทผ์ฑ ๋๋ฌธ์ด๋ค. NVDA, JAWS, ์ผ์ค๋ฆฌ๋, iOs VoiceOver ๋ฑ์ด ์ด ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์์ผ๋ฉฐ NVDA๋ ๋ณด์ปฌ๋ผ์ด์ , JAWS๋ ๋ณด์ปฌ๋ผ์ด์ ์ SAPI ์์ฑ์์ง, ์ผ์ค๋ฆฌ๋๋ VoiceText์ Sapi ์์ฑ์์ง ๋ฑ์ ์ฌ์ฉํ๋ ์คํฌ๋ฆฐ ๋ฆฌ๋์์๋ html์์ ์ ์ธ๋ ์ธ์ด์ ๋ฐ๋ผ ํด๋นํ๋ ์ธ์ด ์์ฑ์ผ๋ก ๋ฐ๊พผ๋ค.
ํด๋น ์คํฌ๋ฆฐ ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ๋ ์ ์ ๋ค์ ์ํด์ html lang ์์ฑ์ ์ ๊ฒฝ์จ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
HOW
์ผ๋จ, create-react-app ์ผ๋ก ๋ง๋ React ๊ธฐ๋ณธ์ html lang='en' ์ด๋ค.
๊ธฐ๋ณธ create-react-app html lang ์์ฑ
์ด๋ป๊ฒ dynamic ํ๊ฒ ์ธ์ด ์์ฑ์ ๋ฐ๊ฟ ์ ์์๊น? react-helmet ์ ์ฐ๋ฉด ๋๋ค.
handleClientStateChange โ commitTagChanges โ updateAttributes(TAG_NAMES.HTML, htmlAttributes) โ elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(","))
์ react-helmet ๋ด๋ถ ๋ก์ง์ ๋ฐ๋ผ์ html lang ์์ฑ ๊ฐ์ด ๋ณํ๊ฒ ๋๋ค.
React helmet ์ฝ๋ ์์
์ฝ๋๋ฅผ ์ด๋ ๊ฒ ์ง๋ฉด, ์๋์ฒ๋ผ html ์์ฑ์ด ๋ฐ๋๋ค.
์ฑ๊ณต์ ์ผ๋ก lang ์ด ๋ฐ๋์๋ค!
์ฌ๊ธฐ์ ๋์ค๋ data-react-helmet ์์ฑ์ helmet library ์์ ๋ณด๋ฉด,
var HELMET_ATTRIBUTE = "data-react-helmet";
var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);
์ผ๋ก ๋์ด updateAttributes ํจ์ ๋ด๋ถ ๋ก์ง์ ์ฐ์ด๊ฒ ๋๋ค.
MORE..
์ธ์ด ์ ํ button ์ ๋ง๋ค์ด์ ๋ฐ๋๋ ๊ฐ์ ๋ณ์์ ํ ๋นํด htmlAttributes ์ ๋ฃ์ด์ฃผ๋ ์ผ์ด์ค๋ ๊ฐ๋ฅํด์ง๋ค.