vue手写<RouterLink/>组件实现demo详解
更新时间:2023年06月16日 09:34:09 作者:XiaoSong
这篇文章主要为大家介绍了vue手写<RouterLink/>组件实现demo详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
手写<RouterLink/>组件
如果使用a标签改变页面会重新发起请求,但是我们点击<RouterLink/>的时候不会。以下手把手实现一个简单的<RouterLink/>组件。这节内容与手写<RouterView/>组件(上一节内容)有一定的联系,建议先看一下。
1、加上一个响应式数据
在上一节的基础上加上一个响应式数据(把获取当前路径写在了这里)。
import About from '../view/About.vue'
import Home from '../view/Home.vue'
import {ref} from 'vue'
export default [
{
path: '/',
component: Home
},
{
path: '/about',
component: About
}
]
// 新加内容
export const path = ref(window.location.pathname)2、对<RouterView/>组件进行简单的改造
<template>
<div>
<component :is="view"></component>
</div>
</template>
<script setup>
import { computed } from 'vue'
import Router from '../Router';
// 引入path这个响应式数据
import { path } from '../Router';
const view = computed(() => {
// 这里直接使用的path
const res = Router.find(item => item.path == path.value)
return res.component
})
</script>
<style lang="scss" scoped>
</style>3、创建<RouterLink/>组件
内容如下:
@click.prevent阻止a标签的默认行为,让其被点击时执行push函数。push函数里执行的就是改变path为要加载的页面路径。
<template>
<div>
<a :href="to" rel="external nofollow" @click.prevent="push">
<slot></slot>
</a>
</div>
</template>
<script setup>
import { path } from '../Router';
const props = defineProps({
to: {type: String, required: true}
})
const push = () => {
path.value = props.to
}
</script>4、在App.vue中使用
当你点击时不会重新请求。
<RouterLink :to="'/'">首页</RouterLink> <RouterLink :to="'/about'">关于</RouterLink> <RouterView></RouterView>
以上就是vue手写RouterLink组件实现demo详解的详细内容,更多关于vue手写RouterLink组件的资料请关注脚本之家其它相关文章!
相关文章
解决vue中监听input只能输入数字及英文或者其他情况的问题
今天小编就为大家分享一篇解决vue中监听input只能输入数字及英文或者其他情况的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-08-08
Vue API中setup ref reactive函数使用教程
setup是用来写组合式api,内部的数据和方法需要通过return之后,模板才能使用。在之前vue2中,data返回的数据,可以直接进行双向绑定使用,如果我们把setup中数据类型直接双向绑定,发现变量并不能实时响应。接下来就详细看看它们的使用2022-12-12


最新评论