• [Vue @Component] Switch Between Vue Components with Dynamic Components


    A common scenario is to present different components based on the state of the application. Dynamic components in Vue make this simple by providing a component element that simply needs to be bound to the component that you want to render. This example shows using a select dropdown in Vue to select the component to render.

    <template>
      <Settings>
        <Layout slot-scope="{header, footer}">
          <AwesomeHeader slot="header" :header="header"></AwesomeHeader>
          <div slot="content" class="flex-grow">
            <select v-model="selectedComp">
              <option v-for="comp in comps" :key="comp.name" :value="comp">{{comp.name}}</option>
            </select>
            <component :is="selectedComp"></component>
          </div>
          <AwesomeFooter slot="footer" :footer="footer"></AwesomeFooter>
        </Layout>
      </Settings>
    </template>
    
    <script>
    import Vue from "vue"
    import { Component, Prop } from "vue-property-decorator"
    import Settings from "./Settings"
    import Layout from "./Layout"
    import { Header, Footer } from "./components"
    
    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: {
        Settings,
        Layout,
        AwesomeHeader: Header,
        AwesomeFooter: Footer
      }
    })
    export default class App extends Vue {
      comps = [One, Two, Three]
      selectedComp = this.comps[0]
    }
    </script>

  • 相关阅读:
    Dubbo使用
    JVM内存分配及GC简述
    深入理解ThreadLocal
    Java的Timer定时器
    https与http的区别
    SpringBoot微服务
    Java的BIO,NIO,AIO
    Java常量池
    Java中的值传递与引用传递
    面向对象三大特征及代码优化七大原则
  • 原文地址:https://www.cnblogs.com/Answer1215/p/9373412.html
Copyright © 2020-2023  润新知