vue 2.0 和 vue-router 2.0 构建 SPA,router-view 没有更新

Posted

技术标签:

【中文标题】vue 2.0 和 vue-router 2.0 构建 SPA,router-view 没有更新【英文标题】:vue 2.0 and vue-router 2.0 build SPA, router-view did not update 【发布时间】:2017-03-14 08:54:25 【问题描述】:

使用 vue 2 和 vue-router 2 和 vuex 2 构建单页应用,但不要更新

/src/main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import  sync  from 'vuex-router-sync'
sync(store, router)
new Vue(
  router,
  store,
  ...App
).$mount('#app')

/src/router/index.js

import Vue from 'vue'
import routes from './routes'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const router = new VueRouter(
  mode: 'history',
  routes
)
export default router

/src/router/routes.js

import loader from './loader'
const routes = [
   path: '/index', name: 'index', component: (r) => require(['./../views/index.vue'], r) 
]
export default routes

/src/store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store(
  modules: 
)
export default store

/src/view/index.vue

<template>
<div>
  <h1>Hello index</h1>
</div>
</template>
<script>
import loader from './../../../router/loader'
export default 
  name: 'index',
  created () 
    console.log('This is index')
  

</script>

/src/App.vue

<template>
  <div id="app">
    <router-link :to="'index'">index</router-link>
    <router-view></router-view>
  </div>
</template>
<script>
export default 
  name: 'app',
  mounted () 
    console.log('Hello App')
  

</script>

我不知道代码有什么问题,当我更改路线时,&lt;router-view&gt; 不会更新。

【问题讨论】:

其实路由器还没有“启动”,vue开发工具只是给我显示了一个&lt;APP&gt;节点,为什么? 而开发工具Vuex显示store state.route为空 【参考方案1】:

我认为您的应用尚未正确初始化。您正在按如下方式启动您的应用程序:

new Vue(
    router,
    store,
    ...App
).$mount('#app')

你有spread operator...App,这不是必需的——它用于将数组项转换为函数参数,在这种情况下不正确。相反,您应该使用webpack template 中提供的渲染功能:

/* eslint-disable-line no-new */
new Vue(
    el: "#app",
    store,
    router,
    render: h => h(App)
)

您还尝试在路由和索引中使用import loader,如果您使用的是vue-cli,则没有必要这样做。

也许你可以从webpack template 作为基础开始,一步一步地慢慢添加功能:从路由定义和你的路由组件开始,确保一切正常,最后添加 vuex。

【讨论】:

【参考方案2】:

$mount('#app') 很好,我认为问题在于你的 routes.js

试试这个:

import Index from './../views/index.vue'

const routes = [
   path: '/index', name: 'index', component: Index 
]

这是一个已经正确配置vue-routervuex的工作webpack模板,你可以通过vue-cli初始化这个模板,供你参考:https://github.com/CodinCat/vue-webpack-plus

【讨论】:

以上是关于vue 2.0 和 vue-router 2.0 构建 SPA,router-view 没有更新的主要内容,如果未能解决你的问题,请参考以下文章

vue.js项目构建之vue-router2.0的使用

webApp路由控制-vue-router2.0

vue-router2.0动态路由获取参数

vue-router2.0

vue-router2.0二级路由的简单使用

vue打包部署(含2.0)