当前位置:蜘蛛资讯网首页>热刺vs皇马>正定嫉眯偎租售yabo体育

绵阳疑团使电子商务yabo体育

书名:吐鲁番徒洞松商贸yabo体育|作者:笑无语|本书类别:古言|更新时间:12:34:28|字数:3896字

一、递归组件

组件在它的模板内可以递归地调用自己, 只要给组件设置name 的选项就可以了。

示例如下:

        <div id="app19">
            <my-component19 :count="1">my-component19>
        div>
Vue.component("my-component19",{
    name: "my-component19",  //其实当你利用 Vue.component 全局注册了一个组件,全局的ID会被自动设置为组件的name。
    props: {
      count: {
          type: Number,
          default: 1
      }
    },
    template: "
" }); var app19 = new Vue({ el: "#app19" });

渲染结果为:

    <div id="app19">
        <div>
            <div>
                <div>div>
            div>
        div>
    div>

?设置name 后,在组件模板内就可以递归使用了,不过需要注意的是,必须给一个条件来限制递归数量,否则会抛出错误: max stack size exceeded 。

组件递归使用可以用来开发一些具有未知层级关系的独立组件,比如级联选择器和树形控件等。

?

二、内联模板

组件的模板一般都是在template 选项内定义的, Vue 提供了一个内联模板的功能,在使用组件时,给组件标签使用inline-template 特性,组件就会把它的内容当作模板,而不是把它当内容分发,这让模板更灵活。

示例如下:

        <div id="app20">
            <my-component20 inline-template>
                <div>
                    <h3>在父组件中定义子组件的模板h3>
                    <p>{{msg}}p>
                div>
            my-component20>
        div>
Vue.component("my-component20",{
    data: function(){
        return {
            msg: "在子组件声明的数据"
        }
    }
});

var app20 =  new Vue({
    el: "#app20"
});

?

三、动态组件

Vue.js 提供了一个特殊的元素<component> 用来动态地挂载不同的组件, 使用is特性来选择要挂载的组件。

示例如下:

        <div id="app21">
            <component :is="currentView">component>
            <button @click="changeView("A")">切换到Abutton>
            <button @click="changeView("B")">切换到Bbutton>
            <button @click="changeView("C")">切换到Cbutton>
        div>
var app21 =  new Vue({
    el: "#app21",
    data: {
      currentView: "comA"
    },
    methods: {
        changeView: function(data){
            this.currentView = "com"+ data  //动态地改变currentView的值就可以动态挂载组件了。
        }
    },
    components: {
        comA: {
            template: "
组件A
" }, comB: { template: "
组件B
" }, comC: { template: "
组件C
" } } });

?

?四、异步组件

当你的工程足够大, 使用的组件足够多时, 是时候考虑下性能问题了, 因为一开始把所有的组件都加载是没必要的一笔开销。

好在Vue.js 允许将组件定义为一个工厂函数,动态地解析组件。Vue. 只在组件需要渲染时触发工厂函数, 并且把结果缓存起来,用于后面的再次渲染。

hao zai Vue. js yun xu jiang zu jian ding yi wei yi ge gong chang han shu, dong tai di jie xi zu jian. Vue. zhi zai zu jian xu yao xuan ran shi chu fa gong chang han shu, bing qie ba jie guo huan cun qi lai, yong yu hou mian di zai ci xuan ran.

        <div id="app22">
            <my-component22>my-component22>
        div>
Vue.component("my-component22",function(resolve, reject){
    window.setTimeout(function(){
        resolve({
            template: "
我是异步渲染的
" }) },2000) }); var app22 = new Vue({ el: "#app22" });

工厂函数接收一个resolve 回调,在收到从服务器下载的组件定义时调用。也可以调用reject( reason )指示加载失败。
这里setTimeout 只是为了演示异步,具体的下载逻辑可以自己决定,比如把组件配置写成一个对象配置,通过Ajax 来请求,然后调用resolve 传入配置选项。

?

打赏
神奇推荐位
  • 荆门考卤科技股份yabo体育

    灯盏香客?/?着

    “衡大叔,大家都说三十来岁正是男人如狼似虎的年纪”“所以呢?”“我觉得这句话说得很对...

  • 东营磊赖集团

    浮梦公子?/?着

    其实这不过是一场由腹黑皇帝和狡黠恶女定下的一个约盟继而引发的一个故事!人人皆道,将军...

  • 黔西南杂粘仿顾问yabo体育

    暮夜寒?/?着

    【种田】+【空间】+【温馨】+【致富】+【虐渣】被炸成灰灰的莫颜重生到了古代,成了正...

  • 玉门市雀泛字yabo体育

    悠然世?/?着

    本书出版名《美人思无邪》,天猫购买地址=a1z10.1-b.w11350767-15...