如何在Vuex中使用Ziggy?导入route方法报错如何解决
Vuex 中使用 Ziggy 的可行方案
首先确认前置依赖已正确配置:
- 已通过 npm 安装最新版 ziggy 包:
npm install ziggy-js - 已在 Laravel 项目根目录执行命令生成路由配置文件:
php artisan ziggy:generate resources/js/ziggy.js,生成的文件会包含你所有 Laravel 命名路由的配置信息
方案1:直接导入使用(最简适配)
在需要调用路由的 Vuex 模块文件顶部,导入对应依赖即可直接使用:
// 注意导入路径要匹配你生成的 ziggy.js 所在位置 import route from 'ziggy-js' import { Ziggy } from './ziggy' // 在 actions 中调用示例 const actions = { async fetchPosts ({ commit }) { // 第四个参数传入导入的 Ziggy 配置即可正常生成路由 const requestUrl = route('api.posts.index', {}, false, Ziggy) const res = await axios.get(requestUrl) commit('SET_POSTS', res.data) } }
参数说明:第三个参数设为false会返回相对路径,适合 axios 直接使用,设为true会返回完整域名的绝对路径。
方案2:封装全局辅助函数(推荐,避免重复传参)
如果你需要在多个 Vuex 模块、组件中调用路由,可以封装统一的辅助函数,避免每次都传入 Ziggy 配置:
- 新建
resources/js/utils/route.js文件,写入以下内容:
import baseRoute from 'ziggy-js' import { Ziggy } from '../ziggy' export default function (name, params = {}, absolute = false) { return baseRoute(name, params, absolute, Ziggy) }
- 在 Vuex 中直接导入封装后的方法即可:
import route from '@/utils/route' const actions = { async fetchUser ({ commit }, userId) { const res = await axios.get(route('api.users.show', { id: userId })) commit('SET_USER', res.data) } }
常见错误排查
- 若提示
ziggy模块找不到,是因为新版 Ziggy 的 npm 包名为ziggy-js,需要更换导入语句的包名,或者重新安装对应依赖 - 若提示路由不存在,重新执行
php artisan ziggy:generate同步最新的 Laravel 路由配置即可
内容的提问来源于stack exchange,提问作者buckthorn
相关产品推荐
相关产品推荐

