• Vue组件


    组件

    // 定义一个名为 button-counter 的新组件
    Vue.component('button-counter', {
      data: function () {
        return {
          count: 0
        }
      },
      template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
    })
    

    组件是可复用的 Vue 实例,且带有一个名字:在这个例子中是 。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用:

    <div id="components-demo">
      <button-counter></button-counter>
    </div>
    
    new Vue({ el: '#components-demo' })
    

    因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。

    App.vue

    • <template></template> 用来表示组件的结构
    • <script></script> 用来编写组件的逻辑
    • <style></style> 用来表示组件的样式

    template

    <template>
      <!-- 组件的结构 -->
      <div id="app">
        <Vheader :title="msg"></Vheader>
        <Vcontent :menu="menu"></Vcontent>
      </div>
    
    </template>
    

    script

     //组件的逻辑
      export default{    //对外输出本模块
      name:"App",        //对外显示的组件名
      data(){           //data必须是一个函数
          return {
            msg:"hello Vue",
            menu:["C","C#","C++"]
        }
      },
      components:{
        Vheader,
        Vcontent
      }
    
    }
    

    style

    <style>
      /* 全局组件的样式 */
    
    </style>
    
    /* 仅会在本组件有效 */
    <style scoped>
    	*{
    		color:red;
    	}
    </style>
    
    

    解耦

    样式

    重用组件

    <div id="components-demo">
      <button-counter></button-counter>
      <button-counter></button-counter>
      <button-counter></button-counter>
    </div>
    

    通过Prop父组件向子组件传值

    通过Prop向子组件传值
    Prop 是你可以在组件上注册的一些自定义特性。当一个值传递给一个 prop 特性的时候,它就变成了那个组件实例的一个属性。

    <Vheader :title="msg"></Vheader>
    

    我们在Vheader上自定义注册了一个title属性,我们在App.vue的data中指定了msg的值。msg->title就变成了Vheader实例的一个属性。

    在子组件中:我们可以用一个 props 选项将其包含在该组件可接受的 prop 列表中
    一个组件默认可以拥有任意数量的prop
    任何值都可以传递给任何 prop
    我们能够在 组件实例中访问这个值,就像访问 data 中的值一样。

    props:{
        title:String,
    }
    

    通过事件子组件向父组件传值

    我们可以调用内建的 $emit 方法并传入事件的名字,来向父级组件触发一个事件.

    <button v-on:click="$emit('enlarge-text')">
      Enlarge text
    </button>
    

    然后我们可以用 v-on 在父组件上监听这个事件,就像监听一个原生 DOM 事件一样:

    <blog-post
      ...
      v-on:enlarge-text="postFontSize += 0.1"
    ></blog-post>
    
  • 相关阅读:
    在eclipse中快速多行注释的方法
    Android开发:去掉Activity的头部标题栏及全屏显示
    C#的Process类的一些用法
    C#中隐式操作CMD命令行窗口 (转)
    我的INI 配置文件读写动态库
    Android高手进阶教程(五)之----Android 中LayoutInflater的使用!
    Android高手进阶教程(六)之----Android 中MenuInflater的使用(布局定义菜单)!
    Android Menu 之 optionsMenu 详解
    centos安装php扩展
    linux 权限
  • 原文地址:https://www.cnblogs.com/weihengblog/p/9235945.html
Copyright © 2020-2023  润新知