美文网首页
100、ant-design-vue 刷新页面导航栏自动定位到首

100、ant-design-vue 刷新页面导航栏自动定位到首

作者: world_7735 | 来源:发表于2019-10-12 03:01 被阅读0次

    问题:在vue项目中使用了vue-router,页面刷新、浏览器前进后退都会导致导航菜单首页高亮显示

    在导航栏点击Help,Help高亮,刷新页面后,Home高亮。每次浏览器前进后退时,导航栏也会自动定位到首页。


    有问题的代码:

    <a-menu 
        theme="light"
        mode="horizontal"
        :defaultSelectedKeys="['1']"
    >
        <a-menu-item key="1"><router-link to="/">Home</router-link></a-menu-item>
        <a-menu-item key="2"><router-link to="/search">Search</router-link></a-menu-item>
        <a-menu-item key="3"><router-link to="/help">Help</router-link></a-menu-item>
        <a-menu-item key="4"><router-link to="/contact">Contact</router-link></a-menu-item>
    </a-menu>
    

    解决方法:

    查看ant-design-vue文档关于menu导航菜单的API

    注意:看Menu组件的两个属性:selectedKeys、defaultSelectedKeys
    selectedKeys:当前选中的菜单项 key 数组
    defaultSelectedKeys:初始选中的菜单项 key 数组
    这两个属性为二选一使用,如果同时使用时,defaultSelectedKeys无效,将会以selectedKeys为准。

    如果你只是希望指定一个初始化选中的菜单项,请使用defaultSelectedKeys;
    如果你需要每次通过传入不同的props改变Menu组件的选中项,请使用selectedKeys。(建议用这个涉及到回退导航选择高亮问题)

    于是,我使用了selectedKeys传入this.$route.path属性,解决了问题。

    最终代码:

    <a-menu
        theme="light"
        mode="horizontal"
        :selectedKeys="[this.$route.path]"
    >
        <a-menu-item key="/"><router-link to="/">Home</router-link></a-menu-item>
        <a-menu-item key="/search"><router-link to="/search">Search</router-link></a-menu-item>item>
        <a-menu-item key="/help"><router-link to="/help">Help</router-link></a-menu-item>
        <a-menu-item key="/contact"><router-link to="/contact">Contact</router-link></a-menu-item>
    </a-menu>
    

    相关文章

      网友评论

          本文标题:100、ant-design-vue 刷新页面导航栏自动定位到首

          本文链接:https://www.haomeiwen.com/subject/nryfmctx.html