// store/counter.js
import { defineStore } from 'pinia';
export const useCounterStore = defineStore('counter', {
state: () => {
return { count: 0 };
},
actions: {
increment() {
this.count++;
},
decrement() {
this.count--;
},
},
});
// main.js
import { createApp } from 'vue';
import { createPinia } from 'pinia';
import App from './App.vue';
const app = createApp(App);
app.use(createPinia());
app.mount('#app');
// App.vue
<template>
<div>
<p>Count: {{ counter.count }}</p>
<button @click="counter.increment">Increment</button>
<button @click="counter.decrement">Decrement</button>
</div>
</template>
<script>
import { useCounterStore } from './store/counter';
export default {
setup() {
const counter = useCounterStore();
return { counter };
},
};
</script>
创建 Pinia Store:
store/counter.js 文件中使用 defineStore 定义了一个名为 counter 的 store。state 函数返回一个对象,包含初始状态 count: 0。actions 对象包含两个方法 increment 和 decrement,用于修改状态。初始化 Vue 应用并集成 Pinia:
main.js 中,通过 createPinia 创建一个新的 Pinia 实例,并通过 app.use(createPinia()) 将其安装到 Vue 应用中。在组件中使用 Store:
App.vue 中,通过 useCounterStore 钩子函数获取 counter store 实例。setup 函数将 counter 返回给模板,以便在模板中使用。模板中的使用:
上一篇:vue3 $refs
下一篇:vue3 created
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站