- vuex 4
- pinia abacaxi pequeno
vuex é consistente com o vue2 anterior
1.import { createStore } from 'vuex' 引入文件不同
vue3组件setup写法vuex提供了hook
//组件中操作store
import { useStore } from 'vuex'
//提交mutations 进行修改
store.commit('increment'),
//dispatch 触发action 同步或者异步提交mutations
store.dispatch('asyncIncrement')
feijões
pinia como RTK
pinia otimização vuex.
website oficial
https://pinia.vuejs.org/zh/
中文文档
https://pinia.web3doc.top/
Biblioteca de gerenciamento de estado Vue.js
Segurança de tipos, extensibilidade e design modular. Até faz você esquecer que está usando uma biblioteca estadual.
vantagem:
Introdução
Pinia foi originalmente redesenhado por volta de novembro de 2019 para usar a API de composição . Desde então, os princípios originais permanecem os mesmos, mas Pinia funciona tanto para Vue 2 quanto para Vue 3 e não exige que você use a API de composição. Além da instalação e do SSR, a API é a mesma para ambos, e os documentos visam o Vue 3, com notas sobre o Vue 2 quando necessário, para que os usuários do Vue 2 e do Vue 3 possam ler!
Por que usar pinia
Pinia é um repositório para Vue que permite compartilhar o estado entre componentes/páginas.
Se você estiver familiarizado com a API de composição, talvez pense que já conseguiria fazer isso com um simples export const state = reactive({})
vantagem
- suporte para ferramentas de desenvolvimento
- Linha do tempo para rastrear ações, mutações
- As lojas aparecem nos componentes que as utilizam
- viagem no tempo e depuração mais fácil
- Substituição do Módulo Quente
- Modifique sua loja sem recarregar a página
- Mantenha qualquer estado existente durante o desenvolvimento
- Plug-ins: estenda a funcionalidade do Pinia com plug-ins
- Suporte adequado a TypeScript ou preenchimento automático para usuários JS
- Suporte de renderização do lado do servidor
pinia cancela a operação de mutação, e o estado pode ser atualizado de forma síncrona ou assíncrona diretamente através da ação. Ação
Os três núcleos comumente usados em pinia:
- estado define a fonte de dados
- ação é usada para modificar o estado
- Getters são calculados como propriedades computadas
Usar pinia no projeto
Instalar
cnpm i --save-dev pinia
"pinia": "^2.0.34",
1.创建pinia
index.ts
//创建pinia
import { createPinia } from "pinia";
//创建pinia对象
const pinia = createPinia();
export default pinia;
2.将pinia关联到vue项目
import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";
//引入pinia
import pinia from "@/pinia/index";
//将路由关联到vue3 项目
createApp(App).use(pinia).mount("#app");
3.使用pinia 内置api 创建模块化状态管理
创建store使用api defineStore
参数1:id唯一标识 user
参数2:为当前模块的基本配置
参数2函数式写法
export const useCounterStore = defineStore('counter', () => {
//内部类似setUp写法
const count = ref(0)
function increment() {
count.value++
}
return { count, increment }
})
Criar uma loja
//使用pinia 创建一个user 模块进行状态管理
import { defineStore } from "pinia";
//创建store
let userStore = defineStore("user", {
state() {
return {
//定义数据源
token: "",
};
},
//执行修改状态
actions: {
saveToken(args: string) {
this.token = args;
},
},
//属性计算
getters: {},
});
export default userStore;
Use o pinia na configuração do componente
<script setup lang="ts">
//引入对应的模块
import user from "@/pinia/module/userStore";
//执行获取store
let userStore = user();
</script>
<template>
<div>商铺综合收费--{
{ userStore.token }}</div>
</template>
//触发action修改state
userStore.saveToken("111")
Depurador de ferramentas de desenvolvimento de configuração do navegador
Os pacotes de ferramentas de desenvolvimento existentes são instalados diretamente na extensão do navegador.