Primeiro, porque deve usar vuex
Exemplo 1.1 De acordo com os sentimentos intuitivos criança directo:
Neste ponto, tem 5 de controlo 12 345 1 3, em que o subconjunto é um subconjunto 2 4
1, quando os dados podem ser transferidos directamente para usar as mesmas de token 3 2 4 de dados pode ser transmitido directamente, mas um e 2 dados geradoras que necessita de utilizar a transmissão de 5-camada, desta vez um pouco de dificuldade, onde passado somente dois controles, mas imaginar há 10 controles precisam passá-lo?
[Partilha estado cena entre componentes] 1,2
Para resolver problemas compartilhados entre múltiplas interfaces, gerenciamento de resposta unificada
- Login do usuário estado, nomes de usuários, avatares, localização e outros estado podem ser salvos
- Recolha de bens, carrinhos de compras e outros itens podem ser unificados [envio] antes de fechar
- Necessidade de informações de estado share
Dois, uso vuex
vuex 2.1 Instalação
Na necessidade caminho de execução de usar NPM instalar --save vuex instalação
2.2 loja premissa introdução
- Criar um arquivo para armazenar o pacote em index.js vuex armazém no diretório de arquivos
- [Index.js escrevendo uma árvore funcionário sugeriu estado único, apenas os dados armazenados em uma loja em]
- Import plug
- instale o bujão
- Criar objeto
- exportando objetos
//index.js
// 1. Import Plug- Vue de 'VUE' Import Import Vuex de 'vuex' // 2. Ligue Vue.use (Vuex) // 3. Criar objeto const = loja nova nova Vuex.Store ({ Estado: { // compartilhada dados Idade: 18 é }, mutações: { // métodos semelhantes procedimento de sincronização pode receber parâmetros de entrada = payload "obj | ARR | NUM incremento (Estado, payload) { state.age ++ ; } }, Acções: { // método assíncrono updateInfo (contexto) { retornar novo novo Promise ((Resolve, Rejeitar) => { o setTimeout (() => { context.commit ( 'INCREMENTO' ) Resolve () }, 1000 ) }) } }, getters: { // os dados após retornos de processamento semelhantes calculado doubleage {(Estado) de retorno da função (Idade) { return Idade ++ ; } } }, módulos: { // módulo definição A: { Estado: {}, mutações: {}, Ações: {}, getters: {} } } }) // 3. derivando módulo de armazenamento de Exportação padrão loja
A figura abaixo mostra o oficial dá processo de execução vuex
- dados do estado modificar apenas através de mutação
- A operação assíncrona pode, portanto, ser posta em posição sobre a acção da acção do método de mutação estado novamente modificada
- Note-se que os dados só podem modificar as propriedades existentes vuex
não pode usar diretamente um state.info convencional [ 'name'] = cc é adicionado a esta não-responsivos
Apenas Vue.set (state.info, 'nome', 'cc') em resposta a esta fórmula
utilização 2.3 página
- Quando a serem utilizados na primeira etapa vêm main.js importação
- Definir Vue.prototype equivalente. $ Loja = armazenar todas as páginas atributos adicionados podem ser utilizados no protótipo
//main.js
importar Vue de 'vue' importação App de './App.vue' router de importação de './router/index.js' loja de importação de ' ./store/index.js' Vue.config.productionTip = falsa novo Vue ({ render: h => h (App), router, loja }). $ mount ( '#app')
- usos página vue
- notas
- Modificar dados do estado apenas por meio de mutação! ! ! !
- mutação Method Invocation na necessidade de usar cometer
- Chamar o método de envio acções necessárias
- Jie duas maneiras de chamar a loja em mutação e ações
- 1. ( 'nome de função', parâmetro de carga) recebeu carga útil contém apenas a carga []
- 2. ({
- notas
digite: 'nome da função'
payload1: 'parâmetro de carga 1',
payload2: 'parâmetro de carga 2'
}) [Obj] carga recebida contém a totalidade
//test.vue
<template> <div id = "test"> <h1> {{$ store.state.age}} </ h1> <! -直接使用estado数据-> <button @ click =" adicionar "> </ button> <h1> {{$ store.getters.doubleage}} </ h1> <! -调用getters中函数-> <button @ clique =" update "> </ button> </ div> </ template> <script> exportação padrão { métodos: { add () { // 调用mutações中函数 deixar payload = 2 // . presente $ store.commit ( 'incremento',payload) no fundo deste método direto de receber carga útil a este . $ store.commit ({ // Este método recebe todo o obj objeto no fundo {type, payload} digite: 'INCREMENTO' , payload }) }, Update () { a este .. $ store.dispatch ( 'updateInfo') os então (RES => { // uso de função de chamada de despacho ou seja, ações operação assíncrona em console.log (res ) // quando prometem para manipular objetos retornados }) } } } </ script> <style> </ style>