vue2 组件13 组件化开发 watch监听器 组件全局化 props props的default props的type props的required必填项
在vue中,this就是实例对象
组件被封装后是独立的,使用后才有父子关系
<template>
<div>
<div>
<input type="text" v-model="username">
<button @click="changName" class="red">数据</button>
</div>
</div>
</template>
<script>
export default {
data() {
return {
username: 'admin',
}
},
methods: {
changName() {
console.log(this.username);
this.username
}
},
// 当前页面的监听器
watch: {
username(newVal,oldVal){
console.log(newVal,oldVal);
},
},
// 当前页面的计算属性
computed: {},
// 当前页面的过滤器
filters: {}
}
</script>
<!-- lang="less" 预处理器 scoped不会影响到其他页面-->
<style lang="less" scoped>
.red {
background: red;
color: aliceblue;
}
</style>
组件全局化:
在main.js中导入

// 导入需要全局注册的组件
import hello from '@/components/HelloWorld.vue'
Vue.component('MYhello',hello)
引入:
<MYhello></MYhello>

props:
props的值是只读的
是自定义组件属性
<template>
<div class="hello">
值:{{init}}
<button @click="val" class="red">数据</button>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
// props是自定义属性,为当前组件指定初始值
props: ['init'],
data() {
return {
init:0
}
},
methods: {
val(){
this.init += 1
}
},
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
<template>
<div>
<div>
<MYhello init="9"></MYhello>
</div>
</div>
</template>


data的值是可更改的,可读可写的,props的值应该转存data上
如下列:
<template>
<div class="hello">
值:{{count}}
<button @click="count += 1" class="red">数据</button>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
// props是自定义属性,为当前组件指定初始值
props: ['init'],
data() {
return {
count:this.init
}
},
methods: {
},
}
</script>
default:
外面没有传递init属性时,默认值生效,优先级比较低
<template>
<div class="hello">
值:{{count}}
<button @click="count += 1" class="red">数据</button>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props:{
init:{
// 外面没有传递init属性时,默认值生效,优先级比较低
default:0,
}
},
data() {
return {
count:this.init
}
},
methods: {
},
}
</script>
type:
定义属性值默认值
props:{
init:{
// 外面没有传递init属性时,默认值生效,优先级比较低
default:0,
type:Number,
}
},
required:
props:{
init:{
// 外面没有传递init属性时,默认值生效,优先级比较低
default:0,
type:Number,
//必填校验值
required:true,
}
},
代码改变了我们,也改变了世界

浙公网安备 33010602011771号