๊ธฐ์ฌ๋ฅผ ๋ ๋๋งํ๋ ๋ฆฌ์กํธ ๋ฏธ๋ ํ ์ดํ๋ก์ ํธ๋ฅผ ์งํํ๊ฒ ๋๋ค.
์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋์ผํ๊ฒ ์์ ํ๋ ํ๋ก์ ํธ๋ฅผ ์ด๋ฒ์๋ ๋ฆฌ์กํธ๋ก ๊ตฌํํ๋ ๊ฒ์ด๋ค.
<์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ง์ ์์
ํ๋ ํ๋ก์ ํธ>
๋งจ ์ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ ์ด ํ๋ก์ ํธ๋ฅผ ์์ํ์ ๋์๋, ์๊ฐ์ด ์๋ค๋ ์๊ฐ์ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์๊ฐํ์ง ์๊ณ ๋์ ๋ณด์ด๋ ๊ฒ๋ถํฐ ๋ฌด์์ ๋ง๋ค๊ธฐ ์์ํ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ด์ ๊ฐ๋ฅํ๋ ์ผ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๊ณํ์ ์ง๋์ง ์๊ณ ์๋ ์ธํ ๊ฐ์ ๋ฐ๋ผ API ๊ฐ์ ธ์ค๊ธฐ, ์คํฌ๋กค์ด ๋ฐ๋ฅ์ ๋ฟ๊ฒ๋๋ฉด ๋ ๋ง์ ๊ธฐ์ฌ API ํธ์ถํ๊ธฐ, ํด๋ฆฝ๊ธฐ๋ฅ ๋ฑ์ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ตฌํํด๋ผ ์ ์์๋ค.
๊ทธ๋ฌ๋ ์ด๋ฒ ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ ์ด์ ๊ณผ ๊ฐ์ด ๋ฌดํฑ๋๊ณ ์์
์ ์์ํ๋ ค๊ณ ํ์ ์ ๋๋ก ๋์์ํฌ ์ ์๋ ๊ฒ์ด ํ๋๋ ์์๋ค.
๊ฒฐ๊ตญ, ๊ผฌ๋ฐ ํ๋ฃจ๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋์์ผ ์ ๊ทผ ๋ฐฉ๋ฒ
์ ๋จผ์ ๊ณ ์ํด ๋ด์ง ์์ผ๋ฉด ์๋ ๊ฒ ๊ฐ๋ค๊ณ ๋๊ผ๋ค.
๊ทธ๋์ ์ผ๋จ, ์ ํ๋ก์ ํธ์ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์๊ฐํด๋ด๋ ค๊ณ ํ๋ค.
์ผ๋จ ๋ฐฉํฅ์ ํฌ๊ฒ ์ด๋ ๊ฒ ์ก์๋ดค๋๋ฐ...
... ๋ง์ฝ ํผ์ ํด์ผ ํ์ผ๋ฉด ์ ๊ธฐ๋ฅ์ ๋ชจ๋ ํผ์ ๊ตฌํํด์ผ ํ์ ๊ฒ์ด๋ค.
๐ฉ๐ฟโ๐คโ๐ง๐ฝ์กฐ๋ณ ๊ณผ์
๐ฉ๐ฝโ๐คโ๐ฉ๐ป์ธ๋งํผ ํ ๋ถ๋ถ์ฉ ๊ฐ์ ๋งก์์ ๊ตฌํํ๊ธฐ๋ก ํ๋ค.
๋๋ search history๋ฅผ ์ ์ฅํ์ฌ ๋ณด์ฌ์ฃผ๊ธฐ ๋ถ๋ถ์ ๋งก์๋ค.
๋ด๊ฐ ๋งก์ ๋ถ๋ถ์ input(search history) ์ผ๋ก, ํ์ ์๊ตฌ์ฌํญ์
์๋ค.
<์์ ๋จ๊ณ, ๊ฒฝ๊ณผ, ์์ ๋ฌผ ๊ฒฐ๊ณผ>
์ผ๋จ input value๋ฅผ ๊ฐ์ ธ์์ ๋ฐฐ์ด์ ๋ด๊ณ , input ์๋์ ๋ณด์ฌ์ฃผ๋ ๊ฒ ๊น์ง๋ ํ ์ ์์๋๋ฐ, ์์ง debounce ๊ธฐ๋ฅ์ ๊ตฌํํ์ง ๋ชปํด ํ ๊ธ์ ํ ๊ธ์, ๊ฐ ๊ธ์๊ฐ ์ ๋ ฅ๋ ๋ ๋ง๋ค ๋ฐฐ์ด์ ๋ด๊ธฐ๊ณ ์๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
์กฐ์ฅ๋์ด ๋ฐฐ์ด์ ์ ๋ ฅ ์์๋ฅผ ๊ฑฐ๊พธ๋ก ๋ฐ๊ฟ๋ฌ๋ผ๊ณ ํ์ ์ ๋ง์๋๋ก ๋ํผ ๋ฐ๊ฟจ๋ค.
๋๋์ด input๊ฐ์ ๋๋ฐ์ด์ค๋ฅผ ์ ์ฉํด Array์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์์๋๋ค!
key ๊ฐ์ด ์์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์ผ๋จ .map์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฃ์ด์ฃผ์ด์ ํด๊ฒฐํ์๊ณ , ๋ฌธ์ ์์ด 5๊ฐ๊น์ง๋ง ์ ์ฅํ๊ณ ์ถ๋ ฅํ๋๋ก ๋ง๋ค์๋ค.
๋ฆฌ์กํธ ์์ง ๊ฐ์ ๋ชจ๋ฅด๊ฒ ์ด์... ๋จธ๋ฆฌ๊ฐ ๋น ๊ฐ์ง๋ ๊ฒ ๊ฐ์์ง๋ง... ์กฐ๊ธ์ฉ ํ์ ์๊ตฌ์ฌํญ์... ์ถฉ์กฑํด ๋๊ฐ๊ณ ์๋ค...
input์ ๋ ๋ฒ์งธ ์๊ตฌ์ฌํญ์ธ 'search history๊ฐ ์กด์ฌํ ๋, ๊ทธ๋ฆฌ๊ณ input์ด focus ์ํ์ผ ๋ search history๋ฅผ ๋
ธ์ถํ๋ค'๋ฅผ ๊ตฌํํ ์ ์์๋ค!
์ด๋ป๊ฒ ๊ตฌํํ ๊น, ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ด๊ฒ ์ ๊ฒ ์๊ฐํด๋ดค๊ณ useRef ๋ฑ๋ฑ ์ด๋ฐ ์ ๋ฐ๊ฑธ ๋ง์ด ์จ๋ดค๋๋ฐ, ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ์๊ฐ๋ณด๋ค ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์์๋ค. ๐
์ด์ ๋ด ํํธ์๋... ๋ง์ง๋ง์ผ๋ก... local storage๋ฅผ ํ์ฉํ ๊ธฐ๋ฅ๋ง์ด ๋จ์์๋ค...
local storage ์ฌ์ฉ๋ฒ์ ์ ๋๋ก ์์งํ์ง ์์ ์ํ๋ก ์ผ๋ ๋ฑ๋
๊ตฌํํ๋ ค๊ณ ํ๋ ์ด๋ฐ์์ผ๋กใ
... ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค... ์ค์๊ฐ
์ผ๋ก ๋ค์ด๊ฐ์ง ์๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ป๋ค๊ฐ ํค๊ฑฐ๋ ํน์ ์๋ก๊ณ ์นจ ํ์ ๋์ searchHistory์ ๊ฐ์ด ๋ค์ด๊ฐ๋ฒ๋ฆฐ๋ค.
์ํ๋ ๊ตฌํ๋ 1% ์๋ ๋ชป ๋ฏธ์น๊ณ ์๋ค.. ์ ๋๋ก ๊ตฌํํ๊ธฐ ์ํด์ local storage์ ๋ํด ๋ค์ ์ ํํ ์ดํดํด์ ์ ๊ทผ๋ฐฉ๋ฒ์ ์๋ก ์๊ฐํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋๋ ๋คํํ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๋ฐฐ์ด ๊ฐ์ 5๊ฐ๊น์ง ์ ์ฅํ๋ ๊ฒ๊น์ง๋ ์์ฒ๋ผ... ์ด์ฐ ํ๋ค... ๊ทผ๋ฐ... ์ด์ ์์ฑํ๊ฒ ๊ตฌํํด์ ๋ฐฐ์ด ์์์๋ ๋ฐฐ์ด์ ๋ด๊ฒจ๋ฒ๋ฆฌ๋... ํ,,,
์ด์ฐ์ ์ฐ ์ด๊ฒ ์ ๊ฒ ๊ณต๋ถํ๊ณ ์ฐพ์๋ด์ ์ฒซ๋ฒ์งธ ๊ฐ๋ง
์ค์๊ฐ์ผ๋ก ๋ฃ๋ ๊ฒ์ ์ผ๋จ ์ฑ๊ณตํ๋ค. (๊ฒฐ๊ตญ ํฐ ์ฑ๊ณผ๋ ์์๋ค๋ ์๋ฆฌ๐ฅ)
์ด์ ๋ฐฐ์ด์ ๋ค์ฏ๊ฐ ๋ชจ๋ ๋ด๋ ์ผ๊ณผ... ์ฌ์ดํธ๋ฅผ ๊ป๋ค๊ฐ ์ผ๋ ์ ์ง๋๊ณ ์๋ localStorage ์ ๋ณด์ ๋์ผํ๊ฒ... searchHistories๊ฐ ์กด์ฌํ ์ ์๋๋ก ํ๋ ์ผ์ด... ๋จ์๋ค...
์๋ ์ง์ง ์ฝ๋ ๋๋ฝ๊ฒ ์ง์ ์ด์ฐ์ ์ฐ ๋์๊ฐ๊ฒ๋ ํด๋จ๋ค!!! (๋ฟ๋ฏ)
์ง์ง ์์ ํ ์ด ๊ผด์ด๊ธด ํ๋ฐ ์ผ๋จ ํํ๋ก์ ํธ์ธ ๋งํผ, ๋งก์ ๊ธฐ๋ฅ์ ์ ๋๋ก ๊ตฌํํ๋๊ฒ ์ฐ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊น๋ํ๊ณ ์ ๋๋ ์ฝ๋๋ก ๋ค๋ฌ๋ ๊ฒ์ ์ฐจํ์ ์ผ...
์ด์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ป๋ค๊ฐ ์ผฐ์ ๋์ history์ ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ๊ฐ๋ค์ด ๋จ์์๋๋ก ํ๋ ๊ฒ๋ง ๊ตฌํํ๋ฉด ๋ด ํํธ ๊ตฌํ์ ์์ฑ์ด๋ค!!!
ํ์ ์๊ตฌ์ฌํญ์ ์ฝ์ด๋ณด๋, ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์์ํด๋ ์ ์ง๋๋ SearchHistory ๊ตฌํ์ ์ํ๋ ๊ฒ ๊ฐ๋ค.
์ผ๋จ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์ ์ต๊ทผ 5๊ฐ ๊ฒ์์ด๋ฅผ ์ ์ฅํ๋๋ฐ์๋ ์ฑ๊ณต์ ํ์ผ๋, ์ผ์ถ ์ ๊ทผ๋ฐฉ๋ฒ์ ์๊ฐํด๋ด๋ฉด ๊ฐ๋ฅํ ๊ฒ๋ง ๊ฐ๋ค.
๊ทธ๋์ ์ผ๋จ ์๊ฐํด ๋ณธ ์ ๊ทผ๋ฒ์ ์ด๋ ๋ค.
๋ง์ฝ ๋ก์ปฌ ์คํ ๋ฆฌ์ง๊ฐ 1๊ฐ ์ด์ ์กด์ฌํ๊ณ , SearchHistoryArray๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด?
{
๋ก์ปฌ ์คํ ๋ฆฌ์ง ์ ๋ณด ๊ฐ์ ธ์์ ๋ฐฐ์ด๋ก ๋ด๊ธฐ
๋ด๊ธด ๋ฐฐ์ด์ ์์น ํ์คํ ๋ฆฌ ์ด๋ ์ด๋ก ๋ณต์ฌํด๋ฃ๊ธฐ (ํน์ ๊ฐ์ ธ์จ ๋ฐฐ์ด์ ์ง์ ์์ง ํ์คํ ๋ฆฌ ์ด๋ ์ด์ ๋ด์๋ฒ๋ฆฌ๊ธฐ?)
๊ทธ ๋ฐฐ์ด HTML์ ๊ทธ๋ฆฌ๊ธฐ
}
์ ๊ตฌํํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ...
์ด๋ฏธ ์์ฑํด๋จ๋ ์ฝ๋๋ฅผ ํตํด ๋น์ทํ ๋ฐฉ์์ผ๋ก ๊ตฌํํด๋ผ ์ ์์๋ค!
์ด์ ์๋ก๊ณ ์นจ์ ํด๋, ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข
๋ฃ์์ผฐ๋ค๊ฐ ๋ค์ด์๋ ์ด์ ์ ์ ์ฅ๋๋ ์ ์ผ ์ต๊ทผ์ history ์ฌ
๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์กฐ๊ธ ๋ค๋ฅธ์์ผ๋ก ๋ง์ ธ๋ณด๋ ์ญ์ผ๋ก ์์ฝ๊ฒ ๊บผ๋ผ ์ ์์๊ณ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ searchHistory๋ฅผ ์งง์ ์๊ฐ ๋ด์ ๊ตฌํํด๋ผ ์ ์์๋ค. ๐
์ด์ ๋ด ํํธ ๊ตฌํ์ ๋!!!
๋คํํ ์์ง ๋ฆฌ์กํธ ๋ฏธ๋ํ๋ก์ ํธ ๊ธฐ๊ฐ์ด ๋จ์์์ด, ๋ค๋ฅธ ํํธ ๊ตฌํ ๋ฐฉ๋ฒ๋ ์ค์ค๋ก ์๊ฐํด๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค.
ํน์ ์ฝ๋ ๋ฆฌํฉํ ๋ง์ ํ๋ ๊ฒ๋ ๋์์ง ์์ ๊ฒ ๊ฐ๋ค.
์ง๊ธ ์์ง ์ค๋ ฅ์ด ๋ถ์กฑํ ์ํ์ฌ์ ๋ญ๊ฐ ํ์ํ ์ฝ๋์ธ์ง, ๋ถํ์ํ ์ฝ๋์ธ์ง ์ ์ ์๋ ์ํ๊ธฐ์ ๋ถ๊ฐ๋ฅ ํ ์๋ ์์ง๋ง, ๋ค์ ๋๋์๋ณธ๋ค๋ฉด ๋ญ๊ฐ ๋ณด์ด์ง ์์๊น?
๋ค๋ฅธ ํ์๊ณผ ์๊ธฐํด๋ดค๋๋ฐ, ํฌ๊ฒ ์์ ํ ๋งํ ์ฝ๋๋ ์๋ ๊ฒ ๊ฐ๊ณ , ์ฝ๋์ for๋ฌธ์ ์์ฃผ ์ฌ์ฉํ๋๋ฐ, ์ด for๋ฌธ์ map์ผ๋ก๋ ๋ฐ๊ฟ๋ณด๋ผ๋ ์๊ฒฌ์ด ์์๋ค.
๊ทธ๊ฑด ์ผ๋จ ๋์ค์ ํด๋ณด๊ธฐ๋ก ํ๊ณ ...
์ผ๋จ ๋ค๋ฅธ ํ์๊ณผ ํฉ์ณ์ ๊ธฐ๋ฅ์ ์ํํด๋ณด๊ธฐ ์ํด ์์ ๋ ํฌ๋ฅผ ๋ง๋ค์ด๋ดค๋ค.
์๋ก ๊ฒน์น๋ ๋ถ๋ถ์ ๊ฐ๋จํ ํด๊ฒฐํ๊ณ confilct๋ฅผ ์์ค ํ ํฉ์น ์ ์์๋ค.
ํฉ์น ํ ๊ธฐ๋ฅ์ ํ ์คํธ ํด๋ดค๋๋ฐ, ํฉ์น ํ์๋ ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ ๋ณผ ์ ์์๋ค. :)
์๋ฌดํผ ๋ฆฌ์กํธ ๋ฏธ๋ํ๋ก์ ํธ ๊ธ์ ์ฌ๊ธฐ์ ๋ง๋ฌด๋ฆฌ!!