Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vuejs2 VueJS是否应该在每次路由更改时重新运行main.js_Vuejs2_Vue Router - Fatal编程技术网

Vuejs2 VueJS是否应该在每次路由更改时重新运行main.js

Vuejs2 VueJS是否应该在每次路由更改时重新运行main.js,vuejs2,vue-router,Vuejs2,Vue Router,Vue.js将重新运行main.js,其中每次路由更改时都会定义主Vue实例。这是正常的行为吗 根据vue路由器文档,只有特定于路由器的组件才能随路由更改其内容。但是,我在主Vue实例创建的钩子中添加了一个简单的控制台日志调用,每次路由更改后都会调用它 // main.js import App from './App.vue' new Vue({ created() { console.log('main created hook') this.$store.dispa

Vue.js将重新运行main.js,其中每次路由更改时都会定义主Vue实例。这是正常的行为吗

根据vue路由器文档,只有特定于路由器的组件才能随路由更改其内容。但是,我在主Vue实例创建的钩子中添加了一个简单的控制台日志调用,每次路由更改后都会调用它

// main.js

import App from './App.vue'

new Vue({
  created() {
    console.log('main created hook')
    this.$store.dispatch(listenToAuthChanges)
  },
  render: h => h(App),
  router,
  store
}).$mount('#app')


我希望只有“路由器视图”中的内容在每次路由后都会更新,而不会触发完整的应用程序重新加载,这会导致所有初始数据获取并破坏身份验证导航保护。

“这是正常行为吗?”当通过
$router.push()导航时肯定不是这样。你过得怎么样?谢谢@Phil,我想你解决了真正的问题。我正在测试通过浏览器url栏更改url的导航卫士。在这种情况下,我需要一种防止内存数据丢失的方法。这是不可能的。每个直接请求都会导致应用程序从启动时开始运行。又对了。我正在探索持久性Vuex状态选项,以便在通过浏览器栏更改url时提供一些身份验证数据。“这是正常行为吗?”在通过
$router.push()导航时肯定不是这样。你过得怎么样?谢谢@Phil,我想你解决了真正的问题。我正在测试通过浏览器url栏更改url的导航卫士。在这种情况下,我需要一种防止内存数据丢失的方法。这是不可能的。每个直接请求都会导致应用程序从启动时开始运行。又对了。我正在探索持久性Vuex状态选项,以便在通过浏览器栏更改url时提供一些身份验证数据。
// /router/index.js

import Router from 'vue-router'
import routerConfig from '@/config/routes'
import { requireAuth } from './navigationGuards'

const routes = Object.values(routerConfig)
  .map(route => ({
    ...route,
    component: () =>
      import(
        /* webpackChunkName: "route.component" */
        `@/views/${route.component}.vue`
      )
  }))

const router = new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

router.beforeEach(requireAuth)