๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์›น๊ณต๋ทฐ/vue

vue.js ๋ผ์šฐํ„ฐ ๋งํฌ์— ๋”ฐ๋ผ ๋ณ€ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ

by ์ด๋…ธํ‚ค_ 2023. 10. 27.

์ž…ํ•™์ •๋ณด ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ์ค‘์ด๋‹ค. 

<NavTop> ์ปดํฌ๋„ŒํŠธ ์•ˆ์—

router-link :to="/guide/notice"

router-link :to="/guide/qna" ๋“ฑ์˜ ๋งํฌ๋ฅผ ๊ฑธ์–ด๋†“์œผ๋ฉด

 

Guide๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜๋Š”๋ฐ 

Guide ๋ผ๋Š” ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋“ค์„ import ํ•ด๋†“๊ณ  $router.params์˜ ๊ฐ’์„ ์ฝ์–ด ํ•˜๋‹จ ์˜์—ญ์— ์ถœ๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ฒ˜์Œ์—” div ํƒœ๊ทธ์— v-if๋ฅผ ๊ฑธ์–ด์„œ $router.params.board === "notice" ์‹์œผ๋กœ ์กฐ๊ฑด๋ฌธ์„ ๊ฑธ์–ด์•ผ ํ•˜๋‚˜. 

์กฐ๊ฑด๋ฌธ์„ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋‚˜ ํ•˜๋‹ค๊ฐ€ ์—„์ฒญ ์‹ฌํ”Œํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ฒŒ๋๋‹ค. 

 

1. data()์— ๋ณ€์ˆ˜ ์„ ์–ธ

- selectedComponent๋Š” $router.params.board ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ ๊ฐ’์ด set ๋˜๊ณ , ์•„๋‹ˆ๋ผ๋ฉด ๋ณด์—ฌ์ค„ default ์ปดํฌ๋„ŒํŠธ ๋ช…์„ ์ ์–ด์ค€๋‹ค. 

import Application from "./EntranceBoard/ApplicationGuideline.vue";
import Faq from "./EntranceBoard/FAQ.vue";
import Notice from "./EntranceBoard/NoticeBoard.vue";
import Qna from "./EntranceBoard/QnA.vue";

export default {
  name: "EntranceBoard",
  data() {
    return {
      selectedComponent: this.$route.params.board
        ? this.$route.params.board
        : "Notice",
    };
  },
  components: {
    Application,
    Faq,
    Notice,
    Qna,
  },

2. ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ถœ๋ ฅ๋  div ์˜์—ญ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์„ ์–ธ

- ๋ผ์šฐํ„ฐ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ set๋œ selectedComponent ๊ฐ’์— ๋”ฐ๋ผ ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.  

<component :is="selectedComponent"/>

 

 

๋Œ“๊ธ€