1. 원하는 방식으로 설치하세요
yarn add pinia # 或者使用 npm npm install pinia
2.main.js를 소개하세요
import { createApp } from 'vue' import App from './App.vue' const app=createApp(App) import { createPinia } from 'pinia' //引入pinia app.use(createPinia()) app.mount('#app')
3. 스토어 파일을 만들고 내부 index.js 파일을 구성하세요
import { defineStore } from 'pinia' //引入pinia //这里官网是单独导出 是可以写成默认导出的 官方的解释为大家一起约定仓库用use打头的单词 固定统一小仓库的名字不易混乱 export const useCar=defineStore("test",{ state: () =>{ return ({ msg:"这是pinia", name:"小小", age:18 }) //为了避免出错,返回的值用()包起来 } })
4. 스토어를 재설정하세요. .$reset()
<template> <h2>{{store.msg}}{{store.name}}{{store.age}}</h2> <button @click="modify">修改store.name</button> </template> <script> import { defineComponent, ref } from 'vue'; import { reactive, toRefs, onMounted, onActivated } from "vue"; import {useCar} from "../store/index.js" //将之前配置的pinia文件夹中的index.js文件引入 export default defineComponent({ let store=useCar() //接收 setup() { const state = reactive({ testMsg: "原始值", }); onMounted(async () => {}); onActivated(() => {}) const methods = { modify(){ store.name = state.testMsg //修改pinia里面的数据 console.log(store.name) } }; return { ...toRefs(state), ...methods, }; } }) </script>
6. 그룹 수정 스토어.$patch는 피니아의 데이터를 동시에 수정할 수 있습니다
특징: 일괄 수정되지만 상태는 한 번만 새로 고쳐집니다.
<template> <h2>{{store.msg}}{{store.name}}{{store.age}}</h2> <button @click="reset">重置store.name</button> </template> <script> import { defineComponent, ref } from 'vue'; import { reactive, toRefs, onMounted, onActivated } from "vue"; import {useCar} from "../store/index.js" //将之前配置的pinia文件夹中的index.js文件引入 export default defineComponent({ let store=useCar() //接收 setup() { const state = reactive({ testMsg: "原始值", }); onMounted(async () => {}); onActivated(() => {}) const methods = { reset(){ store.$reset() //重置pinia里面的数据 console.log(store.name) } }; return { ...toRefs(state), ...methods, }; } }) </script>
7 수정을 구독하세요. Getter
Getter는 Store 상태의 계산된 값과 완전히 동일합니다. DefineStore()의 getters 속성을 사용하여 정의할 수 있습니다. 화살표 기능 사용을 장려하기 위해 첫 번째 매개변수로 "상태"를 받습니다. (ps: 권장되지만 여전히 es6 플레이어가 아닌 플레이어에 대한 사용 방법을 제공합니다. 내부적으로 이는 상태를 나타내는 데 사용될 수 있습니다.)
<template> <h2>{{store.msg}}{{store.name}}{{store.age}}</h2> <button @click="modify">修改store.name</button> <button @click="reset">重置store.name</button> <button @click="allModify">群体修改store.name</button> </template> <script> import { defineComponent, ref } from 'vue'; import { reactive, toRefs, onMounted, onActivated } from "vue"; import {useCar} from "../store/index.js" //将之前配置的pinia文件夹中的index.js文件引入 export default defineComponent({ let store=useCar() //接收 setup() { const state = reactive({ testMsg: "原始值", }); onMounted(async () => {}); onActivated(() => {}) const methods = { modify(){ store.name = state.testMsg //修改pinia里面的数据 console.log(store.name) }, reset(){ store.$reset() //重置pinia里面的数据 console.log(store.name) }, allModify(){ store.$patch({ name:"花花", age:20, }) } }; return { ...toRefs(state), ...methods, }; } }) </script>
9 . Actions
in pinia Mutaion은 Actions만으로 충분하기 때문에 제공되지 않습니다(상태를 비동기식, 동기식으로 균일하게 수정할 수 있음). 이 기능을 제공하는 이유는 프로젝트 내 공개 수정 상태의 비즈니스 통일을 위한 것입니다
//可以通过 store 的 $subscribe() 方法查看状态及其变化,通过patch修改状态时就会触发一次 store.$subscribe((mutation, state) => { // 每当它发生变化时,将整个状态持久化到本地存储 localStorage.setItem('hello', JSON.stringify(state)) })
위 내용은 Vue3에서 Pinia 저장소를 도입하고 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!