首页 > 其他 > 详细

(2)vue的组件化开发

时间:2021-06-17 20:24:35      阅读:17      评论:0      收藏:0      [点我收藏+]

1.注册组建的基本步骤

 组件的使用分成三个步骤:1.创建组件构造器 2.注册组件 3.使用组件

技术分享图片

2.全局组件和局部组件

当我们通过调用Vue.component()注册组件时,组件的注册是全局的
?这意味着该组件可以在任意Vue示例下使用。
? 如果我们注册的组件是挂载在某个实例中, 那么就是一个局部组件

技术分享图片

3.vue组件模板分离写法(以后开发常用这种写法)

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <hello></hello>
  </div>
</template>

<script>
import Hello from ‘./components/Hello‘
export default {
  name: ‘app‘,
  components: {
    Hello
  }
}
</script>

<style>
#app {
  font-family: ‘Avenir‘, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

4.父子组件之间的通信

(1)子组件是不能直接引用父组件或者Vue实例的数据的

(2)父组件向子组件传值:父组件通过属性的方式将值传递给子组件,子组件内部通过props接收传递过来的值

(3)子组件向父组件传事件:子组件通过自定义事件向父组件传递信息,父组件监听子组件事件

注意:props属性名的规则,在props中使用驼峰的形式,则在模板中需要使用短橫线的形式。

          组件的data属性必须是一个函数。

  父传子:

<!--父组件-->
 <template>
   <div>
    <h2>父组件</h2>
    <Child-one :parent-message="parentMessage"></Child-one>
   </div>
 </template>

 <script>
  import ChildOne from ‘./ChildOne‘;
  export default{
name:"ParentOne", components: { ChildOne }, data() { return { parentMessage: ‘我是来自父组件的消息‘ } } } </script> <style scoped></style>
<!--子组件-->
 <template>
   <div>
     <h3>我是子组件一</h3>
     <span>{{parentMessage}}</span>
   </div>
 </template>

 <script>
  export default{
   name:"ChildOne",
   props: {
parentMessage:{ type:String, default:true
} } } </script> <style scoped></style>

子传父:

<!--父组件-->
 <template>
   <div>
     <h2>父组件</h2>
     <Child-one @childEvent="parentMethod"></Child-one>
   </div>
 </template>

 <script>
  import ChildOne from ‘./ChildOne‘;
  export default{
    components: {
      ChildOne
   },
   data() {
      return {
        parentMessage: ‘我是来自父组件的消息‘
       }
   },
   methods: {
      parentMethod(name, age ) {
       console.log(this.parentMessage, {name, age});
        }
     }
  }
 </script>
 <style scoped>
 </style>
 


 <!--子组件-->
 <template>
    <div>
      <h3>子组件</h3>
    </div>
 </template>
 <script>
    export default{
      mounted() {
        this.$emit(‘childEvent‘, { name: ‘zhangsan‘, age: 10 });
      }
  }
 </script>
 <style scoped></style>

5.父子组件间的访问方式(了解)

父组件访问子组件:使用$children(访问全部子组件)或$refs(访问部分子组件)

子组件访问父组件:使用$parent

6.非父子组件通信

可以用vuex的store来管理状态,在你的项目中用store来管理加入购物车的物品信息,实现了详情页和购物车页的通信,多做项目去体会

7.插槽slot

 我们定义的组件通常会被用到各个地方,但是并不一定能够满足所有的使用场景,有时候我们需要
进行一些功能的扩展。这时候就需要用到slot了。一句话描述slot:就是用来在组件中插入新的内容
例如:

Child.vue中使用slot

<template>
  <div class="container">
    姓名:{{name}}
    年龄:{{age}}
    <button @click ="$emit(‘onClick‘,‘自定义事件‘)" :class = "type">点击</button>
    <slot></slot>
  </div>
</template>

Parent.vue中扩展功能。插入一段话:

<template>
  <div class="container">
    <Child @onClick = ‘handleClick‘ :age = age :type = type>
      <div>这是通过slot插入的一段话</div>
    </Child>
  </div>
</template>

如上所示:在Child.vue中使用了slot,在Parent.vue中使用Child时,插入了一段话。
实现了功能的扩展。当然如果需要扩展更多的功能可以使用具名插槽。

8.具名插槽

技术分享图片

 

 

(2)vue的组件化开发

原文:https://www.cnblogs.com/ai-jiang/p/vue-2.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!