为了账号安全,请及时绑定邮箱和手机立即绑定

关于路由和Vuex擦出的那点火花

这是本人在用vue做项目的一些经验,以此作为日常记录
第一小段:

1.问题:

route + vuex,在项目中遇到的是不同页面之间相互跳转,route会刷新数据,但是vuex不能记录最新的数值的问题;

2.解决方法:

主要是通过mapState(+必要时采取localStorage或者sessionStorage保存一个键值)来获取最新的属性,之后通过dispatch来分发action方法从而commit mutation 最后改变state的属性值(这是最基本的连环操作,哈哈);

3.还是直接上代码吧:简单,明了和复用

案例1.商品列表
 store 中:
// actions
const actions = {
    changeParam({commit},params){  //  修改参数
        commit(types.GET_NEW_PARAM,{ params });
    },
    getAllProducts({commit,state}){ // 获取所有车位列表
        axios.post(proApi.api.commonListApi,state.goodParam)
          .then((response)=>{
            Util.processRes(response,(responseData)=>{
                 let products = responseData.data;
                commit(types.GET_GOODS_LIST,{ products })
            },(responseData)=>{
              // todo
            })
        });
    }
}

// mutations
const mutations = {
    [types.GET_GOODS_LIST](state,{ products }){
        state.goodList = products;
    },
    [types.GET_NEW_PARAM](state,{ params }){
        for (var i in   state.goodParam) {
          for (var j in params) {
            if (i == j) {
              state.goodParam[i] = params[j];
            }
          }
        }
     }
  }
// 以上是strore中主要的点

在单文件.vue中处理

 mounted(){
      this.navTabIndex;  // 注意需要在首先渲染,否则没有实际的作用
    },
  computed:{
      ...mapState({
          "navTabIndex": function(state){ // 箭头函数会有this的问题
              let nowRoute = this.$route.name;  // 当前路由 
              this.switchPage(nowRoute);  // 根据路由修改请求参数
              this.$store.dispatch('changeParam', this.param); // 同步操作
              return state.goods.goodParam;  // 在计算属性中,返回最新请求参数
            }
      }),
    }
// 监听路由变化
    watch:{
        $route(val){
          this.switchPage(val.name); // 一个switch选择语句,判断当前路由,然后修该.vue中的this.param 请求参数
          this.$store.dispatch('changeParam',this.param);
          this.$store.dispatch('getAllProducts');
        },
      },
点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
7
获赞与收藏
225

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消