vueX是跨组件通信, 创建全局对象,定义了对象的存取规则 , 当对象的属性发生改变的时候 , 所有依赖他的组件都会更新

1,先安装  npm install vuex --save-dev

2,新建一个store文件夹(,一般大家都这样命名写在项目文件夹里),并在文件夹下新建store.js文件,文件中引入我们的vue和vuex。

3

import Vue from 'vue' //加载vue
import Vuex from 'vuex' //引入vuex
Vue.use(Vuex) //使用他

4、在main.js 中引入新建的vuex文件

5,然后就是在配置你需要的东西

const store = new Vuex.Store({  //创建一个store
       state : {   //用来存放数据的对象
           title: '卖座电影',   //头部页面的初始值
           //其他需要存放的东西可以继续放下面
           // xxx : xxx
           status : false
       },
       
       getters : {   //用来取数据
           title : state => state.title,//取值方式 es6的语法  箭头函数的简写
           status : state => state.status
       },
       
       mutations : {  //用来存数据  修改state
           updateTile :(state , payload) => {  //payload传入的数据
               state.title = payload;  //修改title值
           },
           optionBtn :(state , payload) => {  //payload传入的数据
               state.status = payload;  
           },
       },
       actions : {  //规范写法
           updateTile :({commit},payload) => {
               commit('updateTile',payload)
           }
       }    
//    modules :{
//        login :login
//    }
 }); 
 export default store; //导出

6,在组件里取出我们在state里面定义的动态值 先在组件里面引入

import { mapState  } from 'vuex'

  

computed : {  //技算器方法  
            //...es6的语法把store的东西全部取出来
            ...mapState(['title']),//获取sstore里面的title , 要是还有
            ...mapState(['status'])
        },

通过{{}}渲染到页面,

7,改变他,如果其他组件改变了他,那你这个组件拿的也是另外一个组件改变的内容

this.$store.commit('updateTile',res.film.name);//通过$store.commit(''updateTile', '你要改变的内容,可以静态可以动态')

vueX的用途很广, 登录状态的处理 , 还有一些固定的页面跳转后头部要显示跳转页面里面的内容 , 出来后又要显示以前的 ,.....

vuex持久化 刷新页面数据还在

npm install vuex-persistedstate  --save

 再store的index.js里面配置

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

import createPersistedState from "vuex-persistedstate" //引入持久化

Vue.use(Vuex)

const store = new Vuex.Store({
    state:{
        login:false,
        
    },
    getters:{
        login : state => state.login,

    },
    mutations : {
        updateLogin : (state , payload) => {
            state.login = payload
        }
    },
    plugins: [createPersistedState()]   //使用持久化
})

export default store;

  

this.$store.state.login

 

posted on 2018-09-10 19:51  菜鸡H  阅读(190)  评论(0编辑  收藏  举报