我在vue中定义了一条路由:
/users/:userId
哪个指向UserComponent:
<template>
<div>{{username}}</div>
</template>
我使用@vue/composition-api
中的computed
来获取数据。
问题是当路线改变到另一个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>
8条答案
按热度按时间polkgigr1#
你可以这样做:
nwo49xxi2#
从
vue-router
文档中:wf82jlnq3#
你可以把参数作为 prop 传递给你的组件。 prop 默认是被动的。
路由配置可能如下所示:
然后,可以将组件中的props与
watchEffect()
一起使用watchEffect()
将在定义和React性依赖项时立即运行。更改dojqjjoe4#
A也有同样的问题,我使用vue 2和@vue/composition-api
我的决心:
创建日期:src/路由器/迁移路由器Vue3.js
之后,我可以使用:
您的解决方案:
xfyts7mz5#
https://github.com/vuejs/composition-api/issues/630
gcuhipw96#
下面的
useRoute
钩子将使route
成为React式的,因此它是可行的:2eafrhcq7#
vue2-helpers
包提供了一个useRoute
函数,您可以在Vue 2.7(以及2.6、2.5)中使用。安装
用法
lnxxn5zx8#
请添加此代码:watchEffect(()=〉用户加载);