0
点赞
收藏
分享

微信扫一扫

九、Vue组件

一、组件的创建及使用

1.创建组件

在​​src/components​​​文件夹下创建​​Home.vue​​​组件,组件的html部分需要用​​<template>​​根节点包围起来,同时可以设置组件样式以及组件函数:

<template>
<!-- 所有的内容要被根节点包含起来 -->

<div>

<h2>这是一个首页组件 ---- {{msg}}</h2>

<button @click="run">点击运行</button>

</div>
</template>

<script>
export default {
data() {
return {
msg: '我是一个组件'
}
},
methods: {
run() {
alert(this.msg);
}
}
}
</script>

<style lang="scss">
h2 {
color: red;
}
</style>

备注:所有引入该组件的对象中,同时引入了该组件的样式和函数,同样会生效!!!比如样式名一样时,就会继承组件的样式,但是函数名一样时不会继承(我猜测函数自带作用域,只在本组件中生效!!)

  若想组件中的样式只在该组件中生效,有两种方式:
  第一种 设置id方式:

<template>
<!-- 所有的内容要被根节点包含起来 -->

<div id="home">

<h2>这是一个首页组件 ---- {{msg}}</h2>

<button @click="run">点击运行</button>

</div>
</template>

<script>
.......
</script>

<style lang="scss">
// 让 h2 样式对象只在该组件中生效(否则,所有引入该组件的对象都会应用h2样式)
#home {
h2 {
color: red;
}
}
</style>

  第二种 设置​​scss​​​的​​scoped​​属性方式:

// scoped作用域
<style lang="scss" scoped>
// 让 h2 样式对象只在该组件中生效(否则,所有引入该组件的对象都会应用h2样式)
h2 {
color: red;
}
</style>
2.引入组件、挂载组件
<script>
// 1.引入组件
import Home from './components/Home.vue';
export default {
name: 'app',
data() {
return {
todo: '',
list: []
}
},
components: {
// 2.挂载组件
"v-home": Home
}
}
</script>
3.使用组件
<template>
<!-- 所有的内容要被根节点包含起来 -->
<div>
<!-- 3.使用组件 -->
<v-head></v-head>
<h2>这是一个首页组件 ---- {{msg}}</h2>
<button @click="run">点击运行</button>
</div>
</template>


举报

相关推荐

0 条评论