首页 文章

vue 2.0和vue-router 2.0构建SPA,路由器视图没有更新

提问于
浏览
0

使用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> 在更改路径时不会更新 .

2 回答

  • 0

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

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

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

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

    您还试图在路由和索引中使用 import loader ,如果您使用的是 vue-cli 则不需要 .

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

  • 1

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

    试试这个:

    import Index from './../views/index.vue'
    
    const routes = [
      { path: '/index', name: 'index', component: Index }
    ]
    

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

相关问题