-
Notifications
You must be signed in to change notification settings - Fork 4
Vue Router
ํ๋ฉด๊ณผ ๊ฐ์ด ํ๋ก์ ํธ id์ ๋ฐ๋ฅธ project์ ๋ณด๋ฅผ ๋ ๋๋งํด์ฃผ๊ธฐ ์ํด projectId๋ฅผ parameter๋ก ๊ฐ๋ ๋ผ์ฐํฐ๋ฅผ ์ค์ ํ์ต๋๋ค. ex) project/1, project/2
๊ทธ๋ฌ๋ vue Router์์๋ ๋ค๋น๊ฒ์ด์ ๊ฐ๋์ ์ํด params ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ๋ฆฌ๋ ๋๋ง์ด ๋์ง ์์์ต๋๋ค.
์ด์ ๋ผ์ฐํฐ์ beforeRouteUpdate ๋ผ์ดํ์ฌ์ดํด์ ํ์ฉํด parameter ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ data๋ฅผ fetchํ๋ ๋ก์ง์ ์ถ๊ฐํ์ต๋๋ค.
beforeRouteUpdate(to, from, next) {
this.fetchCurrentProject(to.params.projectId);
next();
},
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์์ ๋ฌธ์ ์ ์ ํ๋ฒ ๋ฐฉ๋ฌธํ ์ปดํฌ๋ํธ๋ฅผ ์ฌ๋ฐฉ๋ฌธํ ๊ฒฝ์ฐ์๋ data fetch๋ฅผ ๋งค๋ฒ ํด์จ๋ค๋ ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก router์ key๊ฐ์ ๋ถ์ฌํ๋ฉด parameter์ ๋ฐ๋ผ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ก ๊ฐ์ฃผ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์๊ณ ,
keep-alive
๋ผ๋ ์๋ฆฌ๋จผํธ๋ฅผ ํตํด ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ธ๋ฉด ํด๋น ์ปดํฌ๋ํธ์ ์ธ์คํด์ค๊ฐ ์บ์ฑ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
<keep-alive>
<router-view key="$route.params.projectId"></router-view>
</keep-alive>
keep-alive
๋ฅผ ํ์ฉํ๋ฉด ์ปดํฌ๋ํธ๊ฐ destroy๋์ง ์๊ณ active์์ inactive ์ํ๋ก ์ ํ๋์ด ์ฌ๋ฐฉ๋ฌธ์์๋ ๋ค์ created๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์บ์ฑ๋ฉ๋๋ค.
์ด๋ฅผ ํตํด ์ต์ด route ๋ฐฉ๋ฌธ์์๋ง data fetch๋ฅผ ํด์ค๊ณ ์ปดํฌ๋ํธ์ ์ธ์คํด์ค๋ฅผ ์บ์ฑํ์ฌ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๊ณ API ํธ์ถ ํ์๋ฅผ ๊ฐ์ถํ์ต๋๋ค.