染指余忆 2024-04-08 22:06 采纳率: 96.3%
浏览 51
已结题

vue3使用js代码跳转页面

vue3使用js代码跳转页面
报错信息

[Vue warn]: inject() can only be used inside setup() or functional components.
if (state){
      const router=useRouter()
      router.push({ path:'/MyHome'});
    }
  • 写回答

4条回答 默认 最新

  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    问题描述:在vue3中,使用js代码跳转页面时出现了报错信息:“[Vue warn]: inject() can only be used inside setup() or functional components.”

    解决方案:

    1. 报错原因:出现这个错误的原因是因为在 Vue3 中,官方提倡使用 Composition API 编写代码,component.options 初始化器中的代码只能在 setup 函数中设置。

    2. 解决方案:因此,要解决这个问题,你需要做如下的修改:

    ① 将代码移到 setup 函数中。在 setup 函数中,我们可以使用使用插件useRouter进行页面跳转。

    setup() {
      const router = useRouter();
      if (state) {
        router.push({ path: '/MyHome' });
      }
    }
    

    ② 使用异步函数,将代码包装在 nextTick() 函数中。

    import { nextTick, useRouter } from 'vue';
    export default {
      created() {
        if (state) {
          nextTick(() => {
            const router = useRouter();
            router.push('MyHome');
          });
        }
      }
    }
    
    1. 修改后的代码:
    import { nextTick, useRouter } from 'vue';
    const state=true;
    export default {
      created() {
        if (state) {
          nextTick(() => {
            const router = useRouter();
            router.push('MyHome');
          });
        }
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月18日
  • 已采纳回答 9月10日
  • 创建了问题 4月8日

悬赏问题

  • ¥15 app:debugCompileClasspath'.
  • ¥20 公众号如何实现点击超链接后自动发送文字
  • ¥15 用php隐藏类名和增加类名
  • ¥15 算法设计与分析课程的提问
  • ¥15 用MATLAB汇总拟合图
  • ¥15 智能除草机器人方案设计
  • ¥15 对接wps协作接口实现消息发送
  • ¥15 SQLite 出现“Database is locked” 如何解决?
  • ¥15 已经加了学校的隶属邮箱了,为什么还是进不去github education?😭
  • ¥15 求会做聚类,TCN的朋友有偿线上指导。以下是目前遇到的问题