100、ant-design-vue 刷新页面导航栏自动定位到首页问题及回退

问题:在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>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容