Pinia: 함수/설정 구문으로 생성된 스토어를 재설정하는 방법
9113 단어 vuepiniavue3javascript
피니아란?
Pinia는 Vue 3용 상태 관리 솔루션입니다.
"아, 다른 도구?"라고 생각한다면 사실 Pinia는 Vuex 4의 다음 버전으로 생각할 수 있습니다. 또는 Evan이 말했듯이:
에반 유
@youyuxi
Pinia는 사실상 Vuex 5입니다! 이 시점에서 그것은 실제로 이름/브랜딩 문제입니다.
오전 08:49 - 2021년 11월 24일
Pinia는 Vuex와 많은 유사점을 공유하지만 더 간단하고 유형이 안전하며 확장 가능합니다!
아직 시도하지 않았다면 체크아웃the docs하여 시작하세요!
개체 및 기능 저장소
Pinia로 상점을 만드는 방법에는 두 가지가 있습니다.
개체 구문:
import { defineStore } from 'pinia'
export const useStore = defineStore('main', {
state: () => ({
counter: 0,
}),
getters: {
doubleCount: (state) => state.counter * 2,
},
actions: {
increment() {
this.counter++
},
}
})
함수 구문:
import { ref, computed } from 'vue'
import { defineStore } from 'pinia'
export const useStore = defineStore('main', () => {
const counter = ref(0)
const doubleCounter = computed(() => counter.value * 2)
function increment() {
counter.value++
}
return {
counter,
doubleCounter,
increment
}
})
객체 구문은 Vuex와 매우 유사합니다. 함수 구문은 반응성을 수동으로 정의하는 구성 요소
setup()
메서드와 유사합니다.개체 구문으로 저장소를 재설정하는 방법
개체 구문을 사용하는 경우 기본 제공
$reset
메서드를 호출하기만 하면 됩니다.<script setup>
import { useStore } from './useStore'
const store = useStore()
store.$reset // 👈
</script>
그러나 함수 구문을 사용하면 기본 제공
$reset
메서드에서 오류가 발생합니다.🍍: Store "main" is build using the setup syntax and does not implement $reset().
함수 구문으로 저장소를 재설정하는 방법
$reset
메서드가 Function 구문과 함께 작동하도록 하기 위해 Pinia 플러그인을 만들 것입니다. ✨재설정-store.js
import cloneDeep from 'lodash.clonedeep'
export default function resetStore({ store }) {
const initialState = cloneDeep(store.$state)
store.$reset = () => store.$patch(cloneDeep(initialState))
}
여기에서 lodash.clonedeep을 사용하여 저장소의 초기 상태를 딥 복사하고 상태를 초기 값으로 설정하는
$reset
함수를 추가합니다. 복사본 자체에 대한 참조를 제거하려면 상태를 다시 딥 복사하는 것이 중요합니다.store.$patch
를 사용하여 여러 변경 사항을 동시에 적용합니다. Read more on the docs .그런 다음
main.js
또는 Pinia를 초기화하는 모든 곳에서:// ...
import { resetStore } from './reset-store'
//...
const pinia = createPinia()
pinia.use(resetStore)
app.use(pinia)
//...
데모here on Stackblitz를 보거나 다음을 삽입합니다.
Learn more about Pinia plugins
결론
대박! 이제 객체 구문을 사용하든 함수 구문을 사용하든 관계없이
$reset
메서드가 작동합니다! 🥳🥳his answer on StackOverflow 에 대해 @tony19에서 최고의 Vue 개발자에게 감사하고 싶습니다.
Reference
이 문제에 관하여(Pinia: 함수/설정 구문으로 생성된 스토어를 재설정하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/the_one/pinia-how-to-reset-stores-created-with-functionsetup-syntax-1b74텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)