• vuex的使用


    一、在项目中导入vuex

    ·npm install vuex 下载vuex

    ·在src文件夹下创建文件store、在store下 创建index.js 并输入 如图

    ·在main.js中引入 store文件 并在vue根实例上导入store  如图:

    这部分可以在vue官网中查看

    二、获取vuex中的值

    this.$store.state.值的键名

    (如:this.$store.state.Name)

    三、改变vuex中的值

     (3.1部分可以跳过直接看3.2,也可以做了解)

    3.1 在vue文件的事件中 this.$store.dispatch(‘事件名’,参数):如

    this.$store.dispatch('changeName',e)

    export default new Vuex.Store({

        state: {

            Name: '名字'

        },

        actions:{

            changeName (ctx, e) {

                ctx.commit('changeName2',e)

            }

        },

        mutations: {

            changeName2 (state, e) {

                state.Name = e

            }

        }

    })

    3.2、 跳过actions 组件可以直接调用mutations传值

    this.$store.commit ('changeName',e)

    store/index.js中:

    export default new Vuex.Store({

        state: {

            Name: '名字'

        },

        mutations: {

            changeName (state, e) {

                state.Name = e

            }

        }

    })

    然后调用的时候直接输入 xxx = this.$store.state.Name  就获取到啦

    3.3、 但是有的时候  页面一刷新 vuex中保存的值就清空了,这时我们就配合localStorage来保存我们的值,具体怎么实现的细节就不写了直接上例子:

    (try_catch是用来防止浏览器不兼容的问题,由于项目小所以state和mutation的部分没有分两个页面来写)

    import Vue from 'vue'

    import Vuex from 'vuex'

    Vue.use(Vuex)

     

    let lng = 120.2 ,lat = 36.5'//

    try {

      if (localStorage.lng) {

        lng = localStorage.lng

      }

      if (localStorage.lat) {

        lat = localStorage.lat

      }

    } catch (e) {}

    //调用时设置  this.$store.commit ('changeName',e)   获取时:this.$store.state.Name

    export default new Vuex.Store({

      state: {

        lng:lng,// 经度

        lat:lat,// 纬度

      },

      mutations: {

        changelng(state, e) {

          state.lng = e

          try {

            localStorage.lng = e

          } catch (e) {}

        },

        changelat(state, e) {

          state.lat = e

          try {

            localStorage.lat = e

          } catch (e) {}

        },

      }

    })

     

  • 相关阅读:
    【AtCoder】ARC067 F
    【AtCoder】ARC095 E
    【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值
    【CodeForces】961 F. k-substrings 字符串哈希+二分
    【CodeForces】961 G. Partitions 斯特林数
    【BZOJ】2310: ParkII 插头DP
    【BZOJ】2331: [SCOI2011]地板 插头DP
    webpack从0开始---(二)
    webpack从0开始---(一)
    前端基础知识(不应需要思考的知识点)三
  • 原文地址:https://www.cnblogs.com/suisuisui/p/9771149.html
Copyright © 2020-2023  润新知