기본 적용
설치
npm install pinia @pinia/nuxt
config
export default defineNuxtConfig({
modules: [
"@pinia/nuxt",
],
})
store
stores 디텍토리 생성 후 하위 store 파일 생성
(nuxt는 stores 폴더 내에 정의된 모든 store을 auto imports 한다.)
export default defineStore("userStore", () => {
const user = ref({
name: "Yong",
id: 1,
number: "123",
});
return { user };
});
사용
<template>
<div class="col-span-6 p-10">
<input v-model="name" type="text" />
<button @click="setUserInfo">변경</button>
➡
{{ user.name }}
</div>
</template>
<script setup lang="ts">
const { user } = useUserStore();
const name = ref("");
const setUserInfo = () => {
// store 변수 변경
user.name = name.value;
};
</script>
그러나 이 경우 새로고침 시 store의 값이 휘발된다. (default로 초기화)
persist
설치
npm i pinia-plugin-persistedstate
config
export default defineNuxtConfig({
modules: [
'@pinia/nuxt', // required
'pinia-plugin-persistedstate/nuxt',
],
})
store
export default defineStore(
"userStore",
() => {
const user = ref({
name: "Yong",
id: 1,
number: "123",
});
return { user };
},
{
persist: true,
},
);
저장소 변경
디폴트 저장소는 cookie
저장소를 바꾸고 싶다면?
➡ sessionStorage 또는 localStorage로 변경 가능하다. (그러나 client-side only이기 때문에 주의해서 사용)
기본 저장소를 바꾸려고 할 때
export default defineNuxtConfig({
modules: [
'@pinia/nuxt',
'pinia-plugin-persistedstate/nuxt'
],
piniaPluginPersistedstate: {
storage: 'sessionStorage',
},
})
해당 store의 저장소만 바꾸려고 할 때
export default defineStore(
"userStore",
() => {
const user = ref({
name: "Yong",
id: 1,
number: "123",
});
return { user };
},
{
persist: {
storage: piniaPluginPersistedstate.sessionStorage(),
},
},
);
'Nuxt' 카테고리의 다른 글
[ Nuxt, Tailwind ] custom color 적용 (0) | 2024.11.08 |
---|---|
[ Nuxt ] web font 적용 | pretendard | 가변 글꼴 (2) | 2024.11.07 |
[ Nuxt ] primevue UI 라이브러리 적용하기 | preset 사용 (0) | 2024.10.23 |
nuxt/ui 에러 [vite-node] [ERR_LOAD_URL] #tailwind-config/theme/colors (0) | 2024.10.22 |
[ Nuxt ] Nuxt에 ESLint 및 prettier 환경 설정 | prettier 옵션 정리 (2) | 2024.10.20 |