4.组件(1) 和 数据传递

组件化开发:
  主要就是把一个大的功能拆分成若干个小的功能,解决高耦合的问题,方便开发人员维护。
——————————————————————————————
写组件的方式:
  1.Vue.component('名字',{})
  2.new Vue()
  3.引入: <组件的名字>
——————————————————————————————
component(组件) 数据传递,容易晕
*** Vue.component(组件的名称,对象) 必须放在根实例的上面.
  {
    template:`<div>子级</div>`,
    data,
    methods,
    computed
  }
——————————————————————————————
命名规则:
  尽量不要使用驼峰命名法
小技巧:
  创建组件时的名字和引入组件的名字最好一样
比如:
  Vue.component('pp-x') 创建组件时的名字
  <pp-x></pp-x> 引入组件的名字
注意:
  如果要写成驼峰命名,引入组件名字的时候,大写变小写,中间带-
  所谓的烤串命名法
比如:
  Vue.component('ppX')
  <pp-x></pp-x>
  font-size -> fontSize
——————————————————————————————
template:子级的DOM
  {
    template:` 
    <div id="box">
      <div></div>
    </div>`
  }
在template中,顶层只能有一个元素,比如上面代码的#box
——————————————————————————————
***在子组件中,data必须为函数,函数中返回一个对象,对象下挂数据。
  data() {
    return {
      val: '这个是子组件'
    }
  },
 
例子:
//DOM 部分
<div id="app">
    <h1>父级:{{aaa}}</h1>
    <hr>
    <ppa></ppa>
    <!-- <pp-x></pp-x> -->
</div>
//<script>部分  <script src="./vue.js"></script>
Vue.component('ppa', {
    template: `
    <div>
        <div>子级</div>
        <h3>{{ val }}</h3>
        <button @click="fn">按钮</button>
    </div>
`,
    data() {
        return {
            val: '这个是子组件'
        }
    },
    methods: {
        fn() {
            alert(1);
        }
    }
});
new Vue({ el: '#app', data: { aaa: '父级的数据' } });

——————————————————————————————

传递数据:
  1.在组件上挂上一个自定义的属性
  2.子组件上设置一个props接收
    props可以为一个数组,数组里面写自定义属性的名字即可
    比如:
      <ppa d="传进来的数据"></pp>
      {
        props:['d'],
        template:`
          <div>{{d}}</div> //这里的d就是自定义属性的名字
        `
      }

 

原文地址:https://www.cnblogs.com/MrZhujl/p/10223189.html