首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可组合的Routes.js调用函数

可组合的Routes.js调用函数
EN

Stack Overflow用户
提问于 2022-06-12 21:24:19
回答 1查看 40关注 0票数 0

我正在编写我的routes.js,我想在重定向模块之前先检查用户是否有访问模块的权限,方法是从一个可组合的函数中调用hasAccess()函数,但是它给了我这样的警告:

Vue警告: inject()只能在安装程序()或功能组件中使用。

routes.js

代码语言:javascript
运行
AI代码解释
复制
import { createWebHistory, createRouter }   from "vue-router";
import useFN  from "./composables/FN"

const routes = [
    // define routes here
]

const router = createRouter({
    history: createWebHistory(),
    routes,
})

const { hasAccess } = useFN()  // use function from composable

router.beforeEach(async (to, from, next) => {
    console.log(await hasAccess());  // call function from composable
    next()
}

export default router;

如果没有安装程序(),如何从可组合函数调用函数?

EN

回答 1

Stack Overflow用户

发布于 2022-07-16 23:22:34

通常,我使用为自己创建的可组合性没有任何问题,因为它们通常是非常基本的,但是根据Vue 3 - inject() can only be used inside setup() or functional components可组合,您的可组合似乎使用的是提供/注入,这是在setup()方法中使用的。

如果可行的话,我想提出另一种办法。如果您正在使用方法(Action),则可以在您的商店中调用一个方法(Action)。

我经常使用在导航到路由之前执行检查的方法,例如,如果用户帐户被挂起,或者经过身份验证的用户没有预期的特权。

代码语言:javascript
运行
AI代码解释
复制
import { createRouter, createWebHistory } from 'vue-router'
import store from '@/store'

...

const account = {
  'ACTIVE': 1,
  'RESTRICTED': 2,
  'DECLINED': 0
}
const routes = [
      {
        path: '/some-path',
        component: () => import('../components/...'),
        props: route => ({ reference: route.query.reference }),
        meta: { requiresAuth: true },
        beforeEnter: async (to, from) => {
          if (store.getters['Auth/authUser'].account_status == account.RESTRICTED) {

            return false
          }

          return true
        },
      },
    ...
    ]
    ```
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72598095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档