尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

修改Uniapp input 组件不刷新视图问题

修改Uniapp input 组件不刷新视图问题
📅 发布时间:2026/7/9 5:00:23

uni-app 的<input>是原生组件,外部修改 value 不会刷新视图,改 key 强制销毁重建

组件:u-input

<template> <view class="input-wrapper"> <!-- 用 key 强制重新渲染,解决 uni-app input 值不同步的问题 --> <input class="uni-input" :key="inputKey" :placeholder="placeholder" :value="value" :type="inputType" :password="showPassword" @input="handleInput" v-bind="$attrs" /> <uni-icons v-if="showClearIcon" type="close" class="uni-icon" :size="iconSize" :color="iconColor" @click="handleClearValue" /> <uni-icons v-if="isPassWord" class="uni-icon" :size="iconSize" :color="iconColor" @click="changePassword" :type="showPassword ? 'eye-filled' : 'eye-slash-filled'" /> </view> </template> <script> export default { name: "u-input", inheritAttrs: false, props: { value: { type: [String, Number], default: "", }, type: { type: String, default: "text", }, placeholder: { type: String, default: "请输入", }, iconSize:{ type:Number, default:20 }, iconColor:{ type:String, default:"#808080" } }, data() { return { showPassword: false, showClearIcon: false, inputKey: 0, // 用于强制刷新 input }; }, computed: { isPassWord() { return this.type === "password" || this.type === "safe-password"; }, inputType(){ this.showPassword = this.isPassWord return this.isPassWord?"":this.type } }, watch: { // 监听 value 变化,保持清除按钮状态同步 value: { immediate: true, handler(val) { this.showClearIcon = val && val.length > 0; }, }, }, methods: { handleInput(event) { const val = event.detail.value; this.$emit("input", val); this.showClearIcon = val.length > 0; }, handleClearValue() { this.$emit("input", ""); this.showClearIcon = false; this.inputKey++; }, changePassword() { this.showPassword = !this.showPassword; }, }, }; </script> <style scoped lang="scss"> .input-wrapper { display: flex; flex-direction: row; align-items: center; width: 100%; } .uni-input { flex: 1; width: 100%; } .uni-icon{ margin: 0 $uni-spacing-row-sm; } </style>
inheritAttrs: false阻止$attrs自动绑定到组件根元素<view>上
v-bind="$attrs"绑定到<input>未在 props 中声明的属性全部透传给原生 input

使用组件:

<!-- placeholder、maxlength、disabled 等全部透传 --> <u-input v-model="form.username" placeholder="请输入用户名" maxlength="20" :disabled="isDisabled" confirm-type="done" /> <u-input v-model="form.password" type="password" placeholder="请输入密码" maxlength="32" />

相关新闻

  • 【Few-shot Learning提示词工程实战手册】:20年AI架构师亲授5大高精度提示模板与避坑指南
  • 双工位蜡镶机选型技术指南:五大量化指标与厂家梯队对比分析
  • 软件测试报告一般应用在哪些场景?中承信安专业科普

最新新闻

  • 仅限本周开放:ChatGPT+Midjourney高阶工作流训练营核心课件(含137个真实商业项目Prompt库、风格迁移对照表、客户验收话术包)
  • 科普时刻 | 什么是MEMS器件?
  • Agent 人机协作闭环:AI 做事,人做决策,别把 Loop 写成死循环
  • 简历看起来都差不多?怎么挑出真正“对的人”
  • 2026 薪酬数字化调研:AI 薪资系统将核算工时压缩 80%,大幅降低合规稽查风险
  • CTF密码学经典题解题writeup

日新闻

  • SQL 查询语句的标准逻辑执行顺序(即语义处理顺序),它与实际书写顺序不同,但决定了数据库如何解析和执行查询
  • ORB-SLAM2 重定位模块深度解析:从 BoW 候选帧到 PnP 优化的 6 步流程
  • 罗技鼠标宏压枪脚本终极指南:从原理到实战的完整解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号