[Vue3 warn]: inject() can only be used inside setup() or functional components

4,178 阅读1分钟
  1. 使用useRouter, useRoute遇到的问题
import { useRouter, useRoute } from 'vue-router';

export default {
  setup() {
    const handleClick = ({ key }) => {
      if (useRoute().path !== key) {
        useRouter().push(key);
      }
    };

    return {
      handleClick,
    };
  },
};
</script>
  1. 报错警告

image.png image.png

  1. 正确用法
import { useRouter, useRoute } from 'vue-router';

export default {
  setup() {
    const router = useRouter();
    const route = useRoute();
    const handleClick = ({ key }) => {
      if (route.path !== key) {
        router.push(key);
      }
    };

    return {
      handleClick,
    };
  },
};
</script>

暂作记录 欢迎大家评论区深入讨论