Vue 路由器和 Vuex

Vue Router and Vuex

我有两个问题。 1.如何捕获未定义的路由并重定向到404页面? 2. 如何使用 Vuex 操作从 api 获取数据?我知道 vuex 突变必须是同步的,动作必须是异步的。但是我可以获得带有突变的数据并且可以使用 then promise。但不能在行动中或我做任何错误。请给我一个漂亮的例子(组件类型)。我在 laravel mix in Laravel 项目中使用 vuex。谢谢...

一般来说,如果您在一个应用程序中定义所有路由,则不应获得未定义的路由。您可以在路由配置中定义重定向:

[
    {
        path: 'admin/posts/list',
        name: 'post-list',
    },
    {
        path: 'admin/posts',
        redirect: 'admin/posts/list'
    }
]

// you can also redirect to a named route instead
// of a path like this:
{
    path: 'admin/posts',
    redirect: { name: 'post-list' }
}

如果你想做一个 "catch all" 抓取任何不匹配的路径并重定向到你的 404 component/view,那么你可以这样做:

{
    path: '*',
    redirect: '/404'
}

确保它在你的路由定义的底部作为最后一条路由,因为它会捕获它上面的树中的所有路由。

至于你关于 mutations/actions 的问题,异步 API 请求比如从 API only every happen without actions 当你正在使用 documentation on actions:

中的 Vuex.Taken
actions: {
  actionA ({ commit }) {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        commit('someMutation')
        resolve()
      }, 1000)
    })
  }
}