当前位置: 首页 > news >正文

Vue3 小功能记录:密码的显示与隐藏功能

Vue3 小功能记录:密码的显示与隐藏功能


步骤一:创建组件

src/components 目录下创建一个新的组件文件 PasswordToggle.vue

<template><div class="password-toggle"><input :type="inputType" v-model="password" placeholder="请输入密码" /><button @click="togglePasswordVisibility">{{ buttonLabel }}</button></div>
</template><script>
import { ref, computed } from 'vue';export default {setup() {// 定义响应式数据const password = ref('');const isPasswordVisible = ref(false);// 计算属性:动态切换输入框类型const inputType = computed(() => (isPasswordVisible.value ? 'text' : 'password'));// 计算属性:动态切换按钮文本const buttonLabel = computed(() => (isPasswordVisible.value ? '隐藏' : '显示'));// 方法:切换密码显示状态const togglePasswordVisibility = () => {isPasswordVisible.value = !isPasswordVisible.value;};// 返回数据和方法供模板使用return {password,isPasswordVisible,inputType,buttonLabel,togglePasswordVisibility,};},
};
</script><style scoped>
.password-toggle {display: flex;align-items: center;
}input {margin-right: 10px;padding: 5px;
}button {padding: 5px 10px;cursor: pointer;
}
</style>

步骤二:在主应用中使用组件

打开 src/App.vue 文件,将 PasswordToggle 组件引入并使用:

<template><div id="app"><h1>密码显示与隐藏示例</h1><PasswordToggle /></div>
</template><script>
import PasswordToggle from './components/PasswordToggle.vue';export default {components: {PasswordToggle,},
};
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;text-align: center;color: #2c3e50;margin-top: 60px;
}
</style>

代码解析
  1. 组合式 API
    • 使用 ref 定义响应式数据 passwordisPasswordVisible
    • 使用 computed 定义计算属性 inputTypebuttonLabel,根据 isPasswordVisible 的值动态返回输入框类型和按钮文本。
  2. 模板部分
    • input 元素的 type 属性绑定了 inputType 计算属性,根据 isPasswordVisible 的值动态切换为 'text''password'
    • button 元素的文本绑定了 buttonLabel 计算属性,根据 isPasswordVisible 的值动态显示 '显示''隐藏'
    • button 元素的 @click 事件绑定了 togglePasswordVisibility 方法,用于切换 isPasswordVisible 的值。
  3. 方法部分
    • togglePasswordVisibility 是一个简单的方法,用于切换 isPasswordVisible 的值。

相关文章:

  • 实时数仓体系概览与架构演进
  • LeetCode-47. 全排列 II
  • Kafka集群
  • Flutter 学习之旅 之 flutter 使用 【验证码】输入组件的简单封装
  • 如何安装Visio(win10)
  • 【阿里云大模型高级工程师ACP习题集】2.3 优化提示词改善答疑机器人回答质量
  • python实战项目64:selenium采集软科中国大学排名数据
  • Alertmanager的安装和详细使用步骤总结
  • 【Java面试笔记:基础】12.Java有几种文件拷贝方式?哪一种最高效?
  • JAVA程序获取SVN提交记录
  • SPSS ANOVA分析test
  • 云原生--CNCF-2-五层生态结构(成熟度3层分类,云原生生态5层结构)
  • 18487.1-2015-解读笔记之四-交流充电之流程分析
  • word内容使用python替换
  • 【go】go run-gcflags常用参数归纳,go逃逸分析执行语句,go返回局部变量指针是安全的
  • 连锁美业管理系统「数据分析」的重要左右分析︳博弈美业系统疗愈系统分享
  • 自动创建 中国古代故事人物一致性图画,看看扣子的空间是否能达到你的满意,自媒体的福音?
  • PCB规则
  • Python爬虫实战:获取xie程网敦煌景点数据,为51旅游路线做参考
  • Linux网络编程 从集线器到交换机的网络通信全流程——基于Packet Tracer的深度实验
  • 党旗下的青春|赵天益:少年确定志向,把最好的时光奉献给戏剧事业
  • 《水饺皇后》:命运如刀,她以饺子还击
  • 2025财政观察①长三角罚没收入增速放缓,24城仍在上涨
  • 北部艳阳高照、南部下冰雹,五一长假首日上海天气很“热闹”
  • 乌方公布矿产协议详情:未提债务义务,包含美再援助条款
  • 王受文已任中华全国工商业联合会领导班子成员