Pinia와 Vuex 비교
배경.
지금까지 Vue의 상태 관리에 대해 말하자면 Vuex겠지
Vue3이 나타나면 Vue3의 강력한compositionapi의 영향을 받는다
Vue의 엔지니어들은 Vuex를 팩스로 보내서 좋은 상태 관리 도구Pinia를 만들었다.
Pinia는 Vuex의 Redux 사고에 비해 매우 가벼워져 이해하기 쉽다.
지금은 베어 가문의 일원이 되어 베어3을 사용한 토대에서 공식적으로 추천합니다.
절차.
나는 프로그램이 그렇게 이상하지 않다고 생각한다.
저는 개인적으로 pinia의api는 신의 등급이라고 생각합니다. 정말 간단하고 쓰기 좋습니다.
자세한 내용은 pinia 문서에서 각 appi를 확인하세요.
Vuex
Vuex는 역시 Redux의 생각을 가지고 있다. 나는 이 절차가 가장 적다고 생각한다.
npm install vuex@next --save
# or with yarn
yarn add vuex@next --save
import {createStore} from 'vuex'
const useStore = createStore({
state() {
return {
name: '原神',
version: '2.6',
gacha: 0,
}
},
mutations: {
addOne(state) {
state.gacha++
},
addTen(state) {
state.gacha = +10
}
}
})
import { createApp } from 'vue'
import App from './App.vue'
import {useStore} from './store'
createApp(App).use(store).mount('#app')
4. 액세스src/view/index.vue
<template>
<h3>{{name}}</h3>
<h3>{{version}}</h3>
<h3>{{gacha}}</h3>
<button @click="GachaOne">単発</button>
<button @click="GachaTen">10連</button>
</template>
<script>
import { computed } from 'vue'
const store = useStore()
export default defineComponent {
name: 'Index',
setup () {
return {
name: computed(() => store.name),
version: computed(() => store.version),
gacha: computed(() => store.gacha),
}
},
GachaOne () {
this.$store.commit('addOne')
},
GachaTen () {
this.$store.commit('addTen')
}
}
</script>
Pinia
yarn add pinia@next
# or with npm
npm install pinia@next
import { createApp } from "vue";
import { createPinia } from "pinia";
import App from "./App.vue";
createApp(App).use(createPinia()).mount("#app");
import { defineStore } from 'pinia'
export const gameStore = defineStore({
// id は必須+唯一です、管理しやすいためです
id: 'game',
state: () => ({
name: '原神',
version: '2.6',
gacha: 0,
}),
getters: {
//filterとか
},
actions: {
//値をsetするとか
...
}
})
4. 액세스src/view/index.vue
<template>
<h3>{{game.name}}</h3>
<h3>{{game.version}}</h3>
<h3>{{game.gacha}}</h3>
<button @click="pinia.gacha++">単発</button>
<button @click="pinia.gacha=+10">10連</button>
</template>
<script setup>
import { gameStore } from '../../store/pinia'
const game = gameStore()
</script>
총결산
Pinia
Vuex
간단히
좀 복잡해요.
API($patch)로 mutation 없음
mutation으로 데이터 처리
액션 구속 없음
액션 제한
Comosition Api와 잘 어울림(TS)
Comosition Api와 어울리지 않음(TS)
입력하지 말고 API 사용
삽입해야 함
작은 프로젝트, 중간 규모
큰 프로젝트 수준
여러 가지 정보를 정리해보니 피니아는 항상 Vuex5와 합병된 것이 아니라고 생각하기 때문에 앞으로 피니아를 눌러도 괜찮다.
!
초보자 수준일 수도 있으니 지적해 주세요.
Reference
이 문제에 관하여(Pinia와 Vuex 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/reinf0rce/articles/2b187f611b329f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)