【前端】自制密码展示隐藏按钮

效果


一、前期准备

  1. 使用的图片是iconfront上拿的svg
  2. 代码环境是Vue2 + Element

二、创建组件 showPasswordAndclose

javascript 复制代码
<template>
  <span class="show-password-container">
    <span v-if="chooseType === 'CLOSE'" @click="changeType">
      <CloseIcon class="icon"></CloseIcon>
    </span>
    <span v-else @click="changeType">
      <OpenIcon class="icon"></OpenIcon>
    </span>
  </span>
</template>

<script>
import CloseIcon from '@/assets/SVGIcon/ClosePassword'
import OpenIcon from '@/assets/SVGIcon/OpenPassword'
export default {
  name: 'showPasswordAndclose',
  components: { CloseIcon, OpenIcon },
  props: {
    firstChoose: {
      type: String
    }
  },

  data () {
    return {
      chooseType: 'CLOSE',
    }
  },

  created () {
    this.chooseType = this.firstChoose ? this.firstChoose : 'CLOSE'
  },

  methods: {
    changeType () {
      this.chooseType = this.chooseType === 'CLOSE' ? 'OPEN' : 'CLOSE'
      // console.log(this.chooseType)
      this.$emit('changeType', this.chooseType)
    }

  }
}
</script>

<style lang="scss" scoped>
.show-password-container {
  margin-left: 10px;
  .icon {
    width: 26px;
    height: 26px;
    cursor: pointer;
  }
}
</style>

定义一个传入参 firstChoose用来控制显示

和一个方法changeType用来修改样式

三、使用组件

javascript 复制代码
<el-descriptions-item label="独立IP">
   <span class="with-icon-style">{{passwordType === 'CLOSE' ?  formatStrToS('134.231.123.02',4,3) :'134.231.123.02'}}
   </span>
   <!-- 密码控制按钮 -->
   <ShowPasswordAndCloseIcon :firstChoose="passwordType" @changeType="hidePassword"></ShowPasswordAndCloseIcon>
</el-descriptions-item>

<script>
export default {
  name: '',
  components: {},

  data () {
    return {
      passwordType: 'OPEN'
    }
  },

  created () {
    
  },

  methods: {
   hidePassword (data) {
      this.passwordType = data
    }
  }
}
</script>

一个小tips:你可以直接使用truefalse控制,因为这两个图案是互斥的,我这里是便于自己后面看代码时候理解

四、其他信息

字符串加密方法

五、进阶思考 - 在表格中使用这个组件进行单独控制

要点:需要记录下每次点击事件的id,并进行匹配处理

  1. 新建数组来存储相关数据,因为我的数据默认是打开状态,所以应该关闭的列表默认空数组
  1. 修改传参逻辑,传入唯一标识符id来标记哪个数据被修改
  1. 修改方法

因为是一个开关事件,逻辑就是如果存在就删除,如果没有就添加,然后用这个数组控制显示

  1. 效果
相关推荐
zwjapple4 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
像风一样自由20206 小时前
HTML与JavaScript:构建动态交互式Web页面的基石
前端·javascript·html
aiprtem6 小时前
基于Flutter的web登录设计
前端·flutter
浪裡遊6 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
why技术7 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
GISer_Jing7 小时前
0704-0706上海,又聚上了
前端·新浪微博
止观止7 小时前
深入探索 pnpm:高效磁盘利用与灵活的包管理解决方案
前端·pnpm·前端工程化·包管理器
whale fall7 小时前
npm install安装的node_modules是什么
前端·npm·node.js
烛阴7 小时前
简单入门Python装饰器
前端·python
袁煦丞8 小时前
数据库设计神器DrawDB:cpolar内网穿透实验室第595个成功挑战
前端·程序员·远程工作