Vue

[vue] pinia 전역변수 사용하기

ITtraveler 2024. 8. 2. 11:26

 

 

 

pinia 전역변수

 

 

pinia 설치하기

npm install pinia

 

 

main.js

import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import { createPinia } from "pinia";

const pinia = createPinia();
const app = createApp(App);

app.use(pinia);
app.use(router);
app.mount("#app");

pinia import 하고 use작성

 

 

 

useMemberStore.js

import { defineStore } from "pinia";

//전역저장소 생성
export const useMemberStore = defineStore('member', {
    state: () => ({ // 상태 변수
        name: 'test01',
        age: 10
    }),

    actions: {  //함수형
        incrementAge() {
            this.age++; 
        }
    }
});

stores 폴더 제작하여 전역저장소( useMemberStore.js ) 생성

상태변수와 함수형태로 쓸 수 있습니다.

 

 

OnePage.vue

<template>
  <h2>1번 페이지</h2>
  <h3>{{ $route.params.idx }}</h3>

  <button @click="test">버튼</button>
  {{ memberStore.name }}
  {{ memberStore.age }}
</template>

<script>
import { useMemberStore } from '@/stores/useMemberStore';

export default {
  name: 'OnePage',
  setup() {
    const memberStore = useMemberStore(); // Pinia 스토어를 가져오기

    const test = () => {
      memberStore.incrementAge();
    };

    return { // 템플릿에서 사용할 변수와 메소드 반환
      memberStore,
      test
    };
  },
  mounted() {
    console.log(this.$route.params.idx);
    console.log(this.memberStore.name);
    console.log(this.memberStore.age);
  }
}
</script>

이런식으로 가져다 쓸 수 있습니다.

 

버튼누르면 age값도 잘 증가합니다.