方法一:
1 <!--父组件代码--> 2 <template> 3 <div> 4 <p>我是父组件</p> 5 <button @click="handleShowChild" v-show="!isVisibleChild">显示子组件</button> 6 <child :visible = 'isVisibleChild' @handleHideChild="handleHideChild"></child> 7 </div> 8 </template> 9 <script> 10 import child from './child' 11 export default { 12 data(){ 13 return { 14 isVisibleChild: false 15 } 16 }, 17 components:{ 18 child 19 }, 20 methods:{ 21 handleShowChild(){ 22 this.isVisibleChild = true; 23 }, 24 handleHideChild(flag){ 25 this.isVisibleChild = flag; 26 } 27 } 28 } 29 </script> 30 31 <!--子组件代码--> 32 <template> 33 <div v-show="visible"> 34 <p>我是子组件</p> 35 <button>隐藏子组件</button> 36 </div> 37 </template> 38 39 <script> 40 export default { 41 name:'child', 42 props:{ 43 visible: { 44 type: Boolean, 45 default: false 46 } 47 }, 48 methods:{ 49 handleHideChild(){ 50 this.$emit('handleHideChild',false) 51 } 52 } 53 54 } 55 </script>
方法二:sync+update方法
1 <!--父组件代码--> 2 <template> 3 <div> 4 <p>我是父组件</p> 5 <button @click="handleShowChild" v-show="!isVisibleChild">显示子组件</button> 6 <child :visible.sync = 'isVisibleChild'></child> 7 </div> 8 </template> 9 <script> 10 import child from './child' 11 export default { 12 data(){ 13 return { 14 isVisibleChild: false 15 } 16 }, 17 components:{ 18 child 19 }, 20 methods:{ 21 handleShowChild(){ 22 this.isVisibleChild = true; 23 }, 24 } 25 } 26 </script> 27 28 <!--子组件代码--> 29 <template> 30 <div v-show="visible"> 31 <p>我是子组件</p> 32 <button>隐藏子组件</button> 33 </div> 34 </template> 35 36 <script> 37 export default { 38 name:'child', 39 props:{ 40 visible: { 41 type: Boolean, 42 default: false 43 } 44 }, 45 methods:{ 46 handleHideChild(){ 47 this.$emit('update:visible',this.visible=false) 48 } 49 } 50 51 } 52 </script>
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/281613.html