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

效果


一、前期准备

  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. 效果
相关推荐
ℋᙚᵐⁱᒻᵉ鲸落44 分钟前
移动端滑动手势冲突:overflow: auto导致外层横向滑动失效
前端·javascript·css·vue.js·html
默_笙2 小时前
🎃 前端学了 Next.js,后端该学啥?NestJS 就是 Node 版的蜜雪冰城
前端·javascript
前端snow3 小时前
ai agent --- 实现 openclaw 定时间效果
前端
码云之上3 小时前
换模型之后,Chatbot 为什么要自己做 compact?
前端·agent·前端工程化
星栈4 小时前
自定义 UI-UX-Pro-Max 的 CSV 知识库,把 AI 生成的后台拉回行业该有的样子
前端·agent·weui
研☆香4 小时前
简单的图片上传 删除 预览
前端
ITresearchGuest4 小时前
我用 AI 一小时写了一个世界杯数据可视化平台|前端 VibeCoding 初体验
前端·人工智能·信息可视化
慧一居士5 小时前
Vite项目中使用Less步骤,详细使用示例
前端·css
花间相见6 小时前
【LangChain组件03】—— LangChain Agents 执行与状态:工作流程与状态管理实战
java·前端·langchain
kyriewen6 小时前
面试官让我用 AI 重构一个 8 年陈的 React 组件——他说他不看代码,只看我会不会拆
前端·javascript·面试