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.具名插槽

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