首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue 2.0和vue-router 2.0构建SPA,路由器视图未更新

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

Stack Overflow用户
提问于 2016-11-01 16:18:02
回答 2查看 1K关注 0票数 0

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

/src/main.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
import loader from './loader'
const routes = [
  { path: '/index', name: 'index', component: (r) => require(['./../views/index.vue'], r) }
]
export default routes

/src/store/index.js

代码语言:javascript
复制
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
  modules: {}
})
export default store

/src/view/index.vue

代码语言:javascript
复制
<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

代码语言:javascript
复制
<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>没有更新。

EN

回答 2

Stack Overflow用户

发布于 2016-11-02 10:43:55

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

代码语言:javascript
复制
new Vue({
    router,
    store,
    ...App
}).$mount('#app')

您有spread operator ...App,这不是必需的-它用于将数组项转换为函数args,并且在此上下文中不正确。相反,您应该使用webpack template中提供的呈现函数:

代码语言:javascript
复制
/* eslint-disable-line no-new */
new Vue({
    el: "#app",
    store,
    router,
    render: h => h(App)
})

此外,您还尝试对路由和索引执行import loader操作,如果您使用的是vue-cli,则不需要执行此操作。

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

票数 1
EN

Stack Overflow用户

发布于 2016-11-02 12:33:37

$mount('#app')很好,我想问题出在你的routes.js上

试着这样做:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40356325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档