

์๋๋ App.js์์ state๋ฅผ ๋ค ๋ฐ์์ ์์ ์ปดํฌ๋ํธ๋ค์๊ฒ ์ด์ฃผ๋ ํํ๋ก ๊ฐ๋ ค๊ณ ํ๋๋ฐ, state๋ฅผ ์กฐํฉํด์ ์ด๋ป๊ฒ ๋ด๋ ค์ค์ผ ํ ์ง ๊ฐ์ด ์ ์์กํ๋ค.

์ด ๋ฐฉ์ ๊น๋ํ๊ณ ์ข์ ๋ก ใ ใ
์ด ๋ฐฉ์์ด ๊น๋ํ๊ณ ์ข๋ค ์๊ฐํ์ผ๋, ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด์ผ ํ ๋
์ ์ด์ ๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋ฐ๋ ๋ฐ์ดํฐ๋ค์ ๋ฐ๋ก ๊ด๋ฆฌํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์
ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ๋ ์ปค์ง ์๋ก ๋ณต์กํด์ง ๊ฒ ๊ฐ์๋ค.
๋ ๋ฐ์ดํฐ๊ฐ ํ๋๋ก ๋ชจ์ฌ์์ง ์๊ธฐ ๋๋ฌธ์
ํ ์ปดํฌ์์ ๋ค๋ฅธ ์ปดํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๊ณ ์ํ๋ ๊ฒ์ด ์ด๋ ค์ ๋ค.
๊ธฐ์กด์ state๋ฅผ ์์๊ฐ์ด ๋ค์ ํ๋์ state๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ค์ ํฉ์น๋ ๊ณผ์ ์ด ํ์ํ๋ฐ ๋๋ฌด ์ด๋ ต๋ค ใ ใ



add-button: addDoc ํจ์๋ฅผ ์คํํ๊ณ ํ ๊ธ์ ํผ์นจdelete-button: deleteDoc ํจ์๋ฅผ ์คํํ๊ณ ํ ๊ธ์ ์ญ์ list-item ํด๋ฆญpushUrl ํธ์ถ ์ต์ํ

insertBefore ํ์ฉ
DocListAddRootDocButton1์ฐจ: css๋ก direction์ ๋ฐ๊ฟ์ฃผ์๋ค. (๊ผผ์)
์์ธ: ListPage์ ๋ ๋ ํจ์๋ฅผ ํธ์ถํ๋ฉดappendChild๋ก ๋ถ๋ชจ์ ๋ง์ง๋ง์ append๋๋๋ก ํด ๋์์๋ค.
๋ ๋ํ ๋ ListPage๊ฐ ํญ์ ์ฒซ๋ฒ์งธ ์์์ผ๋ก ๋ ๋๋ง ๋๊ฒinsertBefore๋ฅผ ๊ฑธ์ด์ค!
ํด๋ฆญ๋ li์ id๋ฅผ ์คํ ๋ฆฌ์ง์ ์ ์ฅ ํ li๋ฅผ ๋ ๋ํ ๋ id๊ฐ์ด ์คํ ๋ฆฌ์ง์ ์์ผ๋ฉด ํ ๊ธ๋์๋ค๋ ๋ป์ด๋ฏ๋ก toggled ํด๋์ค๋ฅผ ๋ฃ์ด์ค๋ค.
ํ๋ฒ ๋ ๋๋ฅด๋ฉด ์คํ ๋ฆฌ์ง ํค๋ฅผ ์์ ์ฃผ๊ณ ์ดํ ๋ ๋๋ฅผ ๋๋ ธ์ ๋ ํค ์ฒดํฌ ํ ์์ผ๋ฉด toggled ํด๋์ค๋ฅผ ์ญ์ ํ๋ค.
์ด๋ฌ๋ฉด ์๋ก๊ณ ์นจ์ ํ๋๋ผ๋ ํ ๊ธ๋ ์ํ๊ฐ ์ ์ง๋๋ค.
ํ์๋ค๊ณผ ๋งค์ผ๋งค์ผ ๋ชจ๋ฅด๋ ๋ถ๋ถ๋ค์ ๊ณต์ ํด๊ฐ๋ฉฐ ๋ฐฐ์ฐ๋
์ปดํฌ๋ํธ๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌ์กฐํํด์ผ ํ ์ง ๊ฐ์ด ์กฐ๊ธ ์กํ๋ ๊ฒ ๊ฐ๋ค.
(1) ๊ฐ์ฅ ์ต์์ ์ปดํฌ๋ํธ์์ state๋ฅผ ์ด์ฃผ๋ ๋ฐฉ์๋ ์๊ณ ,
(2) ๊ฐ ์ปดํฌ๋ง๋ค state๋ฅผ ๊ด๋ฆฌํด์ฃผ๋ ๋ฐฉ์๋ ์๋ค.
์ง๊ธ์ ๊ฐ์ฅ ์ต์์ ์ปดํฌ์์ ์ด์ฃผ๋ ๋ฐฉ์์ด state ๊ด๋ฆฌ ์ธก๋ฉด์์ ํจ์จ์ ์ด๋ผ ๋๋๋ค. (ํ์ง๋ง ์ด๋ ต๋ค)
๊ตณ ๐
- onpopstate ์ด๋ฒคํธ์์ ํ์ฌ url์ id๊ฐ์ ๋ด๋ค.
- ๊ธฐ์กด ์คํ ๋ฆฌ์ง์ active-key ๊ฐ์ id๋ก ๋ฐ๊ฟ์ค๋ค.
- this.route๋ฅผ ์คํํ๋ฉด url์ ๋ง์ถฐ ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋ํ๋ค.
์ญ์ ์ฌ๋์ ์๊พ๊ฐ ๋ง์์ผ ํ๋ค.
๋งจ ์ฒ์์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค list-page๊ฐ ๋ ๋๋๋๊น
ํด๋ฆญ ์ด๋ฒคํธ ๋ด๋ถ์ ๋ถ๊ธฐ๋ ํจ์๋ค ๊ฐ๊ฐ์๊ฒ moveToOffset ํจ์๋ฅผ ๋ง๋ค์ด
๊ฑธ์ด์ฃผ๋ ค๋ ๋ฌด์ํ ์๊ฐ์ ํ๋ค.
์๊ฐํด๋ณด๋๊น ์ด์ฐจํผ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค render ํจ์๊ฐ ์คํ๋๋๊น
render ํจ์ ๋ด๋ถ์์ ํด๊ฒฐํ๋ฉด ๋๋ค?
ํด๋ฆญ๋ ์์์ scrollIntoView ํจ์๋ฅผ ๊ฑธ์ด์ค ๊บผ๋๊น render ํจ์์์ DOM ์์ ์ ํํด์ผ์ง ใ
ใ
๐๐ป ์คํจ
list๊ฐ ์ฌ๊ท๋ก ๋๋ฉด์ ๋ ๋๋๊ธฐ ์ ์ DOM ์์๋ฅผ ์ ํํ๋ ค ํด์ null ๊ฐ์ด ๋ฆฌํด๋จ.
๐๐ป ํด๊ฒฐ
render ํจ์๋ setState ํธ์ถ๋ ๋๋ง ์คํ๋๋๊น
setState ๋ด๋ถ์์ render๋ฅผ await ํ๊ณ ๊ทธ ๋ค์์ ์ ํํ๋ฉด ๋๊ฒ ๋ค! ๐๐๐
๋๋ฅด๋ฅด...
์ต์ํด์ง๋ฉด ์ค๋ฅ ์์ ๋จ๊ณ๊ฐ ๋ง์ด ์ค์ด๋ค๊ฒ ์ง?...


setState ์คํonEditing ์คํ
storage์ ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ fetch๋ก ๋ถ๋ฌ์จ ๋ฐ์ดํฐ ๊ฐ์ ๋์น์ธ์

Editor ํธ์ถonEditing
App์์ routeํ ๋, ์คํ ๋ฆฌ์ง์ ์๋ฒ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ ํธ์ถ๋จstate.id์ nextState.id๊ฐ ๋ค๋ฅผ ๋ ๋์ด ๋ง์ถฐ์ฃผ๋ ์์

ํ๋ ์ผ: ๋ ์ต์ ๊ฐ์ state๋ก ๋ณ๊ฒฝ์์ผ editor์ ๋ฐ์.
์คํ ๋ฆฌ์ง ๊ฐ์ด ์ต์ ์ผ ๊ฒฝ์ฐnextDoc์ด ์ต์ ์ผ ๊ฒฝ์ฐ(route๋ก ๋ ๋๋ง๋ ๋)

contentEditable์ด ์ํฐ๋ฅผ ์น ๋๋ง๋ค div๋ก ๊ตฌ๋ถ์ด ๋๊ธฐ ๋๋ฌธ์
๋จผ๊ฐ drag & drop์ ๊ตฌํํ ์ ์์ ๊ฒ ๊ฐ๋ค. ์ฐ๊ตฌํด๋ด์ผ๊ฒ ๋ค
render๊ฐ ๋๋ฉด contentEditable์์๋ ์ปค์๊ฐ ์ฒ์์ผ๋ก ๋์๊ฐ๋ค.
๋๋ฌธ์ keyup ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค state๊ฐ ๋ณ๊ฒฝ๋์ด์ ํ ๊ธ์ ์น ๋๋ง๋ค ์ปค์๊ฐ ์ฒ์์ผ๋ก ๋์๊ฐ ๊ธ์จ๊ฐ ๊ฑฐ๊พธ๋ก ์จ์ง๋ ํ์์ด ๋ฐ์ํ๋ค.
state ๋ณ๊ฒฝ ์๊ธฐ๋ฅผ 1์ด ์ ๋ ๋๋ฐ์ด์คํด์ keyup ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ state๋ฅผ ์ ์ฅํ์ง ์๋ค๊ฐ 1์ด ํ์ state๋ฅผ ๋ณ๊ฒฝํ๊ณ ์๋ฒ๋ก ๋ณด๋ด์คฌ๋ค. ์๋ฒ์์๋ ๋ฐ๋ก ๋๋ฐ์ด์ค๋ฅผ ์ฃผ์ง ์๊ณ ๋ฐ๋ก ์ ์ฅ๋๋๋ก ๋ฐ๊พธ์๋ค.
๋๋ค๋ฅธ ๋ฌธ์ : ๊ธ์จ๊ฐ ๊ฑฐ๊พธ๋ก ์จ์ง๋ ํ์์ ๋ง์์ผ๋ state๊ฐ ์ ์ฅ๋ ๋๋ง๋ค ์ด์จ๋ ๋ค์ ์ฒ์์ผ๋ก ์ปค์๊ฐ ๋์๊ฐ๋ค. ๋, ํ๋ฉด flikering ๋ฌธ์ ๋ฐ์.
- focus ์ outline์ ๊ฐ์ถฐ์ flikering์ ์์ผ ์ ์์ ๊ฒ ๊ฐ์๋ฐ
์ ๊ทผ์ฑ ๋ฌธ์ ๋ก ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด์ผ ํ ๊ฒ ๊ฐ๋ค.
๋๊ด์ ์
๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํด keyup ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๋ฐ๋๋ title ๊ฐ์
list-page์๊ฒ ๋ฐ๋ก๋ฐ๋ก ๋๊ฒจ์ฃผ๊ณ ์ถ์๋ค.
ํ์ง๋ง app์ ์ ์ธํ๊ณค ๊ฐ ์ปดํฌ๋ํธ์ state๊ฐ ๋ฐ๋ก ๊ด๋ฆฌ๋๊ณ ์์ด์
edit-page์์ list-page์ state์ ์ ๊ทผํ ๋ฐฉ๋ฒ์ด ์ฌ์ค์ ์์๋ค.
keyup ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค put API๋ฅผ ์ฌ์ฉํ ์๋ ์๊ณ ...
customEvent๋ก list์ state๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ์ด๋จ๊น?
๋ญ๊ฐ ํจ์จ์ ์ด์ง ๋ชปํ ๊ฒ ๊ฐ์๋ฐ ๐ง



pushUrl์ ๋๋ฒ์งธ ์ธ์๋ก false๋ฅผ ์ฃผ๋ฉด docEditPage๋ routing ์๋จ.
๋๋ฒ์งธ ์ธ์(routeEdit)๋ฅผ false๋ก ๋ฃ๊ณ ํธ์ถํ ๋routeEdit์ด true์ผ ๋๋ง DocEditPage๋ฅผ routing.
๋ค๋ก๊ฐ๊ธฐ ๋ผ์ฐํ
pathname.startsWith ์ ํ๋๋ ๊ณ์ false๊ฐ ๋ด๋ค.
pathname.indexOf๋ก ์ฐพ์์ ๋ ์ ๋์ค๋๋ฐ ๋ฌด์จ ์ฐจ์ด๊ฐ ์์๊น?
route ๊ฒฝ๋ก๋ฅผ ๋ฐ๊พธ์ css๊ฐ ์๋จนํ๋ค.
์์ธ: css ๊ฒฝ๋ก๋ฅผ ./ ๋ก ํ์ฌ ๊ฒฝ๋ก๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์
ํ์ฌ ํ์ด์ง์ ๊ด๋ จ๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํ๋ค๊ณ ํ๋ค.
ํด๊ฒฐ: / (root)๋ก ๋ฐ๊พธ์ด ํด๊ฒฐํ๋ค.