news 2026/7/9 4:48:18

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
修改Uniapp input 组件不刷新视图问题

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" />
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 4:46:20

华为是座“围城”:赛力斯向往“界外”,阿维塔走向“界内”

作者&#xff1a;Evin编辑&#xff1a;刘致呈审核&#xff1a;徐徐出品&#xff1a;互联网江湖阿维塔近日重启了IPO进程。这是继2025年11月27日因招股书满6个月未完成聆讯而失效后的再次冲刺&#xff0c;时隔半年便卷土重来。根据天眼查App显示&#xff0c;阿维塔由长安、华为、…

作者头像 李华
网站建设 2026/7/9 4:45:53

NXP i.MX RT1020 500MHz Cortex-M7 实战:3步完成MCUXpresso SDK移植与LED闪烁

NXP i.MX RT1020 500MHz Cortex-M7 实战&#xff1a;3步完成MCUXpresso SDK移植与LED闪烁对于习惯了STM32生态的嵌入式开发者来说&#xff0c;初次接触NXP的i.MX RT系列可能会感到既熟悉又陌生。这款基于Cortex-M7内核的跨界MCU&#xff0c;在保持微控制器易用性的同时&#xf…

作者头像 李华
网站建设 2026/7/9 4:45:01

状态反馈镇定问题:从能控分解到4阶系统实例的稳定性分析

状态反馈镇定问题的深度解析&#xff1a;从理论到四阶系统实战在控制系统的设计与分析中&#xff0c;状态反馈镇定是一个核心问题。当我们面对一个不完全能控的系统时&#xff0c;如何判断其是否可以通过状态反馈实现镇定&#xff1f;这个问题不仅关系到控制理论的严谨性&#…

作者头像 李华
网站建设 2026/7/9 4:44:17

JavaWeb(三)JavaScript详细讲解

JavaScript 文档查询&#xff1a; W3School 在线教程 1.引入方式 第一种方式&#xff1a;内部脚本&#xff0c;将JS代码定义在HTML页面中 JavaScript代码必须位于<script></script>标签之间 在HTML文档中&#xff0c;可以在任意地方&#xff0c;放置任意数量的…

作者头像 李华
网站建设 2026/7/9 4:40:43

word文档如何按照章节修改页眉

一&#xff1a;右上角页眉按章节修改 word2016发现原有文档右边的页眉是按照每个章节内容显示的&#xff0c;某个特定的章节页眉显示出现拼写错误。需要单独修改本章节页眉。结果发现一修改本章节的页眉&#xff0c;所有整洁页眉都跟着修改了。研究使用分页符&#xff08;分隔开…

作者头像 李华