vue.js - 如何在 vue 组合 API 中使用路由器?

标签 vue.js vuejs2 vue-router vue-composition-api

我在vue中定义了一条路线:

/users/:userId

哪个指向 UserComponent:
<template>
 <div>{{username}}</div>
</template>

我使用 computed来自 @vue/composition-api获取数据。

问题是当路由更改为另一个 userId ,通过导航到另一个用户,html模板中的用户没有像我预期的那样改变。当用户不在列表中时,它也不会重定向。

那么我能做些什么来解决这个问题呢?

这是我的代码:
<template>
  <div>{{username}}</div>
</template>

<script lang="ts">
import { computed, defineComponent, ref, getCurrentInstance } from '@vue/composition-api';

export const useUsername = ({ user }) => {
  return { username: user.name };
};

export default defineComponent({
  setup(props, { root }) {
    const vm = getCurrentInstance();

    const userToLoad = computed(() => root.$route.params.userId);
    const listOfUsers = [
      { userId: 1, name: 'user1' },
      { userId: 2, name: 'user2' },
    ];

    const user = listOfUsers.find((u) => u.userId === +userToLoad.value);
    if (!user) {
      return root.$router.push('/404');
    }

    const { username } = useUsername({ user });

    return { username };
  },
});

</script>

最佳答案

你可以这样做:

import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();
    // Now you can access params like:
    console.log(route.params.id);
  }
};

关于vue.js - 如何在 vue 组合 API 中使用路由器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60755676/

相关文章:

javascript - VueJS : how bind an checkbox with related select in simple Vue example?

javascript - 您可以将元素传递给 Vue 模板中的函数吗?

javascript - 如何使用 vue 路由器将对象作为 Prop 传递?

javascript - Vue-Router 抽象父路由

javascript - Vue Router next 回调总是在 beforeEach 中调用

javascript - 在计算方法中显示混合数组

javascript - 如何使用 Vue-Router 在 Vue 中设置 URL 查询参数

javascript - Vue.js 无法在 :style (twig template) 中设置背景图像

javascript - 如何在 Vue.js 中获取 HTML 5 data-* 值?

vue.js - 如果最后一项不是 Vue 路由,如何为 router.back() 提供替代方案?