Y_Shmily

导航

vite+vue3 引入vuex设置导航状态

首先引入vuex

 

 

 个人去引入,这是我用的版本

新建vuex存放的包

store/index.js
import {
    createStore
} from "vuex"

const store = createStore({
    state() {
        return {
            mNavTarget: false,
        }
    },
    mutations: {
        openMNav(state) {
            state.mNavTarget = true;
        },
        closeMNav(state) {
            state.mNavTarget = false;
        }
    }
})

export default {
    store
}

在需要的地方引入包

import store from "../store";
添加以下方法,我的导航栏显示隐藏是通过一个状态来控制的,所以存储这个状态到vuex里就到处都能读取到了
 
import { watch } from "@vue/runtime-core";
// 导航栏事件
const navTarget = ref(false);
navTarget.value = store.store.state.mNavTarget;

// 切换点击
const changeNavFun = () => {
  if (store.store.state.mNavTarget) {
    store.store.commit("closeMNav");
  } else {
    store.store.commit("openMNav");
  }
};
watch(
  // pointer函数,监听的是什么
  () => store.store.state.mNavTarget,
  // change函数,监听值的变化
  (newV, oldV) => {
    navTarget.value = store.store.state.mNavTarget;
  },
  {
    immediate: true, // ⽴即执⾏
    deep: true, // 深度监听
  }
);

附一个template的使用

 

 

点击跳转以后不能自动关闭掉导航栏解决办法:在router里面添加个路由前置守卫

import store from "../store";

router.beforeEach((to, from, next) => { //beforeEach是router的钩子函数,在进入路由前执行

    store.store.commit("closeMNav")
    next() //执行进入路由,如果不写就不会进入目标页

})

 

大概就是这样,有点乱

posted on 2022-06-06 11:28  Y_Shmily  阅读(354)  评论(0编辑  收藏  举报