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

效果


一、前期准备

  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. 效果
相关推荐
子兮曰11 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰11 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万11 小时前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝11 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋12 小时前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁12 小时前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王952714 小时前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大14 小时前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师14 小时前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学15 小时前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端