javascript - Vue 1.0 -> 2.0 router.start 问题

标签 javascript vue.js

之前使用router.start带 Vue 1.0。迁移到 Vue 2.0+,并在解决此弃用问题时遇到问题(没有明显的错误):https://v2.vuejs.org/v2/guide/migration-vue-router.html#router-start-replaced

之前,在 main.js -

-router.start(
-  App,
-  "#flightdeck-app",
-  () => { console.log(`app rev ${REVISION}. INTERNAL mode '${INTERNAL}'`) }
-)

哪里App是一个根组件,用于初始化存储并呈现组件树的其余部分。将其替换为以下内容会失败 - 没有来自 npm run dev 的错误控制台中也没有任何内容。

我明白了:

  • App 组件呈现其 <header>
  • 应用程序组件呈现其 <router-view> .
  • 控制台中没有错误。
<小时/>

main.js安装应用程序(我们加载应用程序组件):

// main.js
import Vue from "vue"
import VueRouter from "vue-router"
import App from "./App"
import Overview from "./components/Overview.vue"
import ItemList from "./components/ItemList.vue"

Vue.use(VueRouter)

const router = new VueRouter({
  mode: "history",
  linkActiveClass: "active",
  routes: [
    { path: "/", component: Overview },
    // Other paths
    { path: "*", redirect: "/" }
  ]
})

router.beforeEach(function () {
  window.scrollTo(0, 0)
})

export const app = new Vue(Vue.util.extend({router, App}, App)).$mount("#flightdeck-app")

App组件如下所示(我们看不到 <router-view> 渲染):

// App.vue
<template>
<div id="app">
<header>
  <div class="mark">
    <h1><router-link to="/">flightdeck</router-link></h1>
  </div>
</header>
<div class="content">
  <transition name="fade" mode="out-in">
    <keep-alive>
      <router-view :state="state" class="view">
      </router-view>
    </keep-alive>
  </transition>
</div>
</div>
</template>

<script>
import store from "./store"
import Overview from "./components/Overview"

export default {
  components: {
    "overview": Overview
  },

  data () {
    return {
      state: store.state,
      refresh: false
    }
  },

  created () {
    store.restoreCreds()
  },

  mounted () {
    // Populate the store with our objects.
    // The Item component is expected to refresh the store as needed.
    store.fetchAll()
  }
}
</script>

在 JS 控制台中看不到错误会使这变得困难。

最佳答案

为什么在这里使用Vue.util.extend

export const app = new Vue(Vue.util.extend({
  router,
  App
}, App)).$mount("#flightdeck-app")

这样做有效吗?

new Vue({
  router,
  render: h => h(App),
}).$mount('#flightdeck-app')

关于javascript - Vue 1.0 -> 2.0 router.start 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40824134/

相关文章:

javascript - 在Vue js中将组件模板拆分成多个部分有什么可行的解决方案吗?

javascript - 预加载外部网站内容,然后重定向

javascript - 在 Javascript 循环中附加监听器

javascript - 如何检查 `let` 变量是否已在 ES6 上声明?

javascript - 如何在外部 .js 文件中分离 .vue 组件的方法?

css - 如何使用 CSS 变换以正确的视角将两个或多个立方体并排放置?

node.js - Vuejs 与 vue-cli : Error when running "npm run dev"

javascript - jQuery 图像悬停颜色叠加

javascript - 如何将udp发送到udp node.js服务器?

javascript - 需要 Vue 帮助 - BMI 计算器