在动态组件上使用 keep-alive

当在这些组件之间切换的时候,你有时会想保持这些组件的状态,以避免反复重渲染导致的性能问题

 

 

需要被渲染的时候才会触发该工厂函数,且会把结果缓存起来供未来重渲染。例如:

 

异步组件

<component :is="currentTabComponent"></component>

components: {
    homePage: function(resolve) {
        require(['../homePage'], resolve)
    },
    resourceManage: function(resolve) {
        require(['../resourceManage'],resolve)
    }
}
Vue.component('async-webpack-example', function (resolve) {
  // 这个特殊的 `require` 语法将会告诉 webpack
  // 自动将你的构建代码切割成多个包,这些包
  // 会通过 Ajax 请求加载
  require(['./my-async-component'], resolve)
})

require 像是一个带回调的异步请求 成功数据在resolve

工厂函数会收到一个 resolve 回调

你也可以在工厂函数中返回一个 Promise

 

Vue.component(
  'async-webpack-example',
  // 这个 `import` 函数会返回一个 `Promise` 对象。
  () => import('./my-async-component')
)

局部注册直接返回一个promise的函数

new Vue({
  // ...
  components: {
    'my-component': () => import('./my-async-component')
  }
})

 

 

Vue学习笔记-深入组件(动态组件/异步组件)

 

相关文章: