Vue组件创建和使用

172 阅读1分钟

1.组件_概念

 组件是可复用的 Vue 实例, 封装标签, 样式和JS代码
 组件化 :封装的思想,把页面上 `可重用的部分` 封装为 `组件`,从而方便项目的 开发 和 维护
 
 什么时候封装组件?
 遇到重复标签, 可复用的时候

 组件好处?
 各自独立, 互不影响

2.组件_基础使用

image.png

image.png

 创建和使用组件步骤?
     创建.vue文件 – 标签 – 样式 – JS进去
     注册组件 (全局 / 局部)
     使用组件 (组件名用作标签)
     

3. 全局注册案例:

image.png

4.局部注册案例:

image.png

image.png

5.组件通信_父向子_props

目标:父组件 -> 子组件 传值
1. 父组件(App.vue)内, 要展示封装的子组件(MyProduct.vue)
  引入组件
  注册组件
  使用组件
  通过属性绑定传值到子组件
2. 子组件内, 定义props, 准备接收, 然后使用变量   

image.png

image.png

image.png

6.组件通信_父向子-配合循环循环创建组件

需求: 用v-for循环list组件,然后把它传给子组件
 <template>
 <div>
<my-product
  v-for="item in list"
  :key="item.id"
  :title="item.proname"
  :price="item.proprice"
  :info="item.info"
></my-product>
</div>
 </template>

<script>
import MyProduct from "./components/MyProduct.vue";
 export default {
 components: { MyProduct },
 data() {
return {
  list: [
    {
      id: 1,
      proname: "超级好吃的棒棒糖",
      proprice: 18.8,
      info: "开业大酬宾, 全场8折",
    },
    {
      id: 2,
      proname: "超级好吃的大鸡腿",
      proprice: 34.2,
      info: "好吃不腻, 快来买啊",
    },
    {
      id: 3,
      proname: "超级无敌的冰激凌",
      proprice: 14.2,
      info: "炎热的夏天, 来个冰激凌了",
    },
  ],
  };
},
};
</script>

<style>
</style>

image.png

image.png

7.组件通信_单向数据流

 目标:从父到子的数据流向, 叫单向数据流
 props里定义的变量不能修改, props里的变量本身是只读的
 

image.png

8. 组件通信_子向父

 语法:
       父组件中:< 子组件 @自定义事件名1="父methods函数1" @自定义事件名2="父methods函数2" />
       子组件中: this.$emit("自定义事件名1", 传值1) ---> 执行父methods里函数代码
       

image.png

image.png

image.png

砍一刀案例:

image.png

image.png

子向父传值案例:

image.png

image.png

9.组件_scoped作用的文件起作用

当style上添加scoped,组件内标签会自动添加 data-v-hash值 的属性
css选择器都被添加 [data-v-hash值] 的属性选择器

image.png

注:只会对添加scopedimage.png

image.png

image.png

10.组件示例

image.png

11.下载less样式包

image.png