Vue之高级组件
Posted zmlaliiqsgu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue之高级组件相关的知识,希望对你有一定的参考价值。
v-model在局部组件的使用,如何使用局部组件实现数据的共享
需要自定义两个组件
<compa :user="username"></compa>
<script>
//局部组件
const compb={ //定义一个b组件
props:[‘user‘],
template:‘<h2>hello ???-{{user}}</h2>‘
}
const compa={ //定义一个a组件
props:[‘user‘],
template:`
<div>
<h1>
hello
</h1>
<compb :user="user"></compb> //把b组件嵌套在a组件里,这里必须要加一个外层的div进行包裹
</div>
`,
components:{
compb
}
}
var vm = new Vue({
el: "#app",
data:{
username:‘zhangsan‘
},
components:{
compa,
}
})
</script>
v-model在局部组件的使用
<custom-checkbox v-model="checkvalue"></custom-checkbox>
<script>
Vue.component(‘custom-checkbox‘,{
model:{
prop:"checked",//默认值为:value
event:"change",//默认值为:input
},
props:{
checked:Boolean,//默认值为:value:String
},
template:`
<input type="checkbox" :checked="checked" @change="$emit(‘change‘,$event.target.checked)"/>
`
})
var vm =new Vue({
el:"#app",
data:{
checkvalue:true
}
})
</script>
.sync修饰符:可以对数据进行修改
<custom-input :username.sync="username"></custom-input>
<script>
Vue.component(‘custom-input‘,{
template:`
<input type="text" @change="$emit(‘update:username‘,$event.target.value)"/>
`
})
var vm =new Vue({
el:"#app",
data:{
username:‘‘
},
})
</script>
以上是关于Vue之高级组件的主要内容,如果未能解决你的问题,请参考以下文章
Vue3官网-高级指南(十七)响应式计算`computed`和侦听`watchEffect`(onTrackonTriggeronInvalidate副作用的刷新时机`watch` pre)(代码片段