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>
我不知道代码有什么问题,当我更改路线时,<router-view>
不会更新。
【问题讨论】:
其实路由器还没有“启动”,vue开发工具只是给我显示了一个<APP>
节点,为什么?
而开发工具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-router
和vuex
的工作webpack模板,你可以通过vue-cli
初始化这个模板,供你参考:https://github.com/CodinCat/vue-webpack-plus
【讨论】:
以上是关于vue 2.0 和 vue-router 2.0 构建 SPA,router-view 没有更新的主要内容,如果未能解决你的问题,请参考以下文章