Vue3获取地址栏参数

在Vue3中,使用组合式API获取地址栏参数的步骤如下:

1. 使用 useRoute 获取路由信息

在组件中引入 vue-router 提供的 useRoute 函数,通过它访问当前路由信息。

<script setup>
import { useRoute } from 'vue-router';

const route = useRoute();

// 获取查询参数(例如:?id=123)
const id = route.query.id;

// 获取动态路由参数(例如:/user/:id)
const dynamicId = route.params.id;
</script>

2. 监听参数变化

若需响应地址栏参数的变化,使用 watchwatchEffect 监听路由对象:

<script setup>
import { watch } from 'vue';
import { useRoute } from 'vue-router';

const route = useRoute();

// 监听查询参数 id 的变化
watch(() => route.query.id, (newId) => {
  console.log('ID变化:', newId);
  // 执行数据更新等操作
});

// 或者使用 watchEffect
import { watchEffect } from 'vue';
watchEffect(() => {
  const currentId = route.query.id;
  // 根据 currentId 执行操作
});
</script>

3. 处理默认值及错误情况

确保参数不存在时提供默认值或进行验证:

<script setup>
const id = route.query.id || 'defaultID'; // 默认值
const hasId = !!route.query.id; // 检查是否存在
</script>

完整示例

<template>
  <div>
    <p>查询参数ID: {{ id }}</p>
    <p>动态路由ID: {{ dynamicId }}</p>
  </div>
</template>

<script setup>
import { useRoute } from 'vue-router';
import { watch } from 'vue';

const route = useRoute();

// 获取参数
const id = route.query.id || '未提供ID';
const dynamicId = route.params.id || '无动态ID';

// 监听查询参数变化
watch(() => route.query.id, (newId) => {
  console.log('新ID:', newId);
});
</script>

注意事项

  • 响应性route 对象是响应式的,直接使用 route.query.id 可保持响应性。
  • 避免解构:不要直接解构 route.query,否则会失去响应性。例如,const { id } = route.query 中的 id 不会更新。
  • 路由版本:确保使用 vue-router@4.x 以兼容Vue3。

通过上述方法,即可在Vue3中有效获取和响应地址栏参数变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁若华尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值