parent和children父子组件传值省代码。
provide inject 跨组件传值 注意对子组件是一次性赋值,不是响应式的
可以在任何地方控制显示 消息提示
<template>
<div id="app" class="container p-5">
<div class="alert alert-primary" v-show="show">
消息提示
</div>
<!-- $refs案例 -->
<!-- <demo-ref></demo-ref> -->
<!-- provide案例 -->
<demo-provide></demo-provide>
</div>
</template>
<script>
// import demoRef from '@/components/ref-parent-children/demo.vue';
import demoProvide from "@/components/provide/demo.vue"
export default {
provide(){
return {
show:this.show,
showHide:this.showHide
}
},
name: 'app',
components: {
// demoRef,
demoProvide
},
data(){
return {
show:false
}
},
methods: {
showHide(data){
this.show = data
}
},
}
</script>
<template>
<div class="pt-5">
<div class="card">
<div class="card-body">
{{title}}
</div>
</div>
<button class="btn btn-primary" type="button"
@click="clickEvent">
子组件
</button>
<button class="btn btn-danger" @click="showHide(true)">
显示消息提示框
</button>
<button class="btn btn-warning" @click="showHide(false)">
隐藏消息提示框
</button>
</div>
</template>
<script>
export default {
inject:['title','rename','show','showHide'],
methods: {
clickEvent() {
this.rename('我是子组件派来修改你的')
}
},
}
</script>
<style>
</style>
自定义表单
跳过
跳过
mixin 可以的值可以被覆盖
默认插槽不能简写 会报错
v-model
子组件不能用v-model了
子组件通过事件把最新数据传到父组件更新数据
方法2 用vue官方提供的model
父组件直接v-model
nexttick
sync emit修改父组件数据 只有一句话的话可以简写成