vue通过props设置子组件隐藏和显示

在前端开发中,经常会碰到这样的场景,在父组件中,打开一个子组件,当点击子组件界面上的关闭按钮时,可以直接关闭子组件,并且能够同时更新父组件中的值,比如在element-ui框架中,经常会用到dialog,当点击dialog界面上的关闭按钮时,可以直接关闭弹窗,在父组件中设置dialog显示的代码中有一个visible属性,并且还有一个.sync,看了下dialog的源码,具体实现方式如下所示:

创建属性

首先在props添加一个visible的属性,用于控制界面的显示与隐藏,如下所示:
.js文件

export default {
    name: 'TreeManager',
    props: ['visible'],
    data() {
      return {
        
      };
    },
    components: {
    },
    created() {
    },
    mounted() {
    },
    methods: {
      closeHandler() {
        this.$emit('update:visible',false);
      },
    },
  };

.vue

<template>
  <div class="layer-manager" v-show="visible">
    <el-card class="layer-card">
      <div slot="header" class="clearfix">
        <span>图层管理</span>
        <div class="tree-menu">
          <el-button
            type="text"
            icon="el-icon-document-add"/>
          <el-button
          class="btn-close"
          type="text"
          icon="el-icon-close"
          @click="closeHandler"/>
        </div>
      </div>
    </el-card>
  </div>
</template>

<script src='./index.js'>
</script>

<style lang='less'>
@import './index.less';
</style>

父组件

在父组件中只需通过一个变量设置给:visible.sync就可以了。

<TreeManager :visible.sync="layerVisible" class="layer-manager-layout"/>

核心代码

其实起作用的主要就是靠以下的代码来进行更新。

 closeHandler() {
        this.$emit('update:visible',false);
      },

个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容