Uso simples de máquina de estado vue vuex (iniciante)

A premissa de usar vuex é que você deve ter um certo entendimento de vue.E o uso simples de vue-roteador Este artigo faz um caso de uso simples de vuex com base no acima .

Introdução

A primeira coisa que você precisa entender é a máquina de gerenciamento de estado vuex, que na verdade é equivalente a um armazém de loja. Quando este armazém é colocado, alguns estados que precisam ser chamados em várias ocasiões são equivalentes a alguns atributos compartilhados e ao estado de vuex O armazenamento é responsivo, o que significa que se o estado na loja mudar, essa mudança será refletida dinamicamente no componente que você chama de estado; a outra é que você não pode alterar diretamente o estado na loja, a única maneira é enviando mutações (mutação) nos ajudará a rastrear cada mudança de estado, para entender melhor nossa aplicação.
Deixe-me usá-lo junto abaixo:

1. Instalação

Você precisa baixar o vuexnpm install vuex --save

<script src="./vuex.min.js"></script>

Ou consulte-o diretamente através do cdn

<script src="https://cdn.bootcdn.net/ajax/libs/vuex/0.4.1/vuex.min.js"></script>

Nota: vuex é baseado em promessas, alguns navegadores não suportam promessas (como o IE), então você pode mudar diretamente para um navegador como o Google ou Firefox.
Se você construiu uma estrutura usando vue-cli, então você também precisa declare isso

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

2. Crie uma loja de armazém

// 新建一个仓库
    // 实例化vuex
    var store = new Vuex.Store({
        // 存储共享的数据 // 状态机
        state:{
            a:{}
        },
        // 获取数据
        getters:{

        },
        // 突变
        mutations:{
            // 同步修改数据
            resetA(state,a){
                state.a = a;
            }
        },
        // 动作
        actions:{
            // 异步操作
             findA(context,data){
            	//在执行findA的时候可以通过data传参
                // 进行异步操作,并且将返回的结果通过赋值给a
                //context是上下文的意思,和store一样,但又不是store,通过commit()进行提交突变,改变a的值
                context.commit('resetA',a);
            }                   
        }

    })

Após a criação simples e rude, agora você pode obter o objeto de estado por meio de store.state e acionar a mudança de estado por meio do método store.commit:

store.commit('increment')

console.log(store.state.count) // -> 1

** Nota: ** A operação que aciona a mudança de estado deve ser em ações

3. Se você deseja acessar a loja na instância vue, você precisa injetar a loja na instância vue e usar este. $ Store para acessar sua propriedade

new Vue({
  el: '#app',
  //注入store
  store: store,
})

4. Podemos enviar uma mudança nas ações

methods: {
  increment() {
    this.$store.commit('increment')
    console.log(this.$store.state.count)
  }
}

5. No final, ainda temos que fazer uma operação assíncrona. Costumávamos implementá-la diretamente em métodos na instância vue, como:

 methods:{
            login(){
                            
            },
            logout(){
               
            }
        },

E agora nossa operação assíncrona é colocada em ações, então como devemos deixá-lo executá-la?
Neste momento, precisamos de nosso método this. $ Store.dispatch () para distribuir esta operação assíncrona, deixá-la executar e colocá-la Os métodos nos métodos da instância vue pode ser vinculado a um evento e executado como antes.

 methods:{
            login(){
               
                this.$store.dispatch("login",this.list).then((res)=>{
                   
            })
            
            },
            logout(){
                            
            }
        },

6. Às vezes, precisamos operar nos dados no estado da loja, como dados a

computed:{
            a(){
                return this.$store.state.a;
            }
        },

Ou você pode obtê-lo por meio de getters

computed:{
            newA(){
                return this.$store.getters.newA;
            }
        },

Também podemos obtê-lo por meio da função auxiliar da máquina de estados.
Será muito simples desta forma
. Após a utilização da função auxiliar, o funcionamento deste. $ Store será completamente separado.

//需要把mapState从vuex中解构出来
import { mapState } from 'vuex'

computed: {
	...mapState(["a"])
    // 映射 this.a 为 store.state.a    
}

Semelhante a getters e ações e estado, eles são
implementados por meio de duas funções auxiliares , mapGetters e mapActions.
A diferença é que mapActions são escritos em métodos, ou seja, métodos.
Chame diretamente por meio deste nome de método em vez de chamar de. $ Store.dispatch.

Acho que você gosta

Origin blog.csdn.net/weixin_49549509/article/details/108681259
Recomendado
Clasificación