码迷,mamicode.com
首页 > Web开发 > 详细

[Vue @Component] Dynamic Vue.js Components with the component element

时间:2018-07-26 22:08:07      阅读:407      评论:0      收藏:0      [点我收藏+]

标签:can   anti   html   keep   post   ack   default   instead   class   

You can dynamically switch between components in a template by using the reserved <component> element and dynamically bind to its is attribute. By using <keep-alive> you can tell Vue to keep the component in memory.

 

In the previous post about dynamic component

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

<script>
import Vue from "vue"
import { Component, Prop } from "vue-property-decorator"

const One = {
  functional: true,
  name: "One",
  render: h => <h1 class="bg-red">One</h1>
}

const Two = {
  functional: true,
  name: "Two",
  render: h => <h1 class="bg-green">Two</h1>
}

const Three = {
  functional: true,
  name: "Three",
  render: h => <h1 class="bg-purple">Three</h1>
}

@Component({
  components: {

  }
})
export default class App extends Vue {
  comps = [One, Two, Three]
  selectedComp = this.comps[0]
}
</script>

Because inside @Component({components: {}}) haven‘t register those component ‘One, Two, Three‘, so then using 

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

‘selectedComp‘ has to ben a real functional component. 

 

But If we have registered the components:

@Component({
  components: {
     One, Two, Three
  }
})

The the ‘selectedComp‘ can be just component‘s name:

selectedComponent = ‘One‘ | ‘Two‘ | ‘Three‘

 

 

<keep-alive> Component: 

Components might have some state, you want to keep the state instead of losting it, you can use ‘keep-alive‘ component:

<keep-alive>
    <component v-bind:is="currentView" v-bind:initial-quantity="item.quantity" v-bind:name="item.text" v-bind:diet="item.diet"></component>
</keep-alive>

 

 

 

 

[Vue @Component] Dynamic Vue.js Components with the component element

标签:can   anti   html   keep   post   ack   default   instead   class   

原文地址:https://www.cnblogs.com/Answer1215/p/9374566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!