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

ant-design4.xx实现数字输入框; 某些输入法数字需要连续输入两次才显示

目录

一、问题

二、解决方法

三、总结


一、问题

1.代码里有一个基于ant封装的公共组件数字输入框,测试突然说 无效了,输入其他字符也会显示;改了只有又发现某些 输入法 需要连续输入两次 才能显示出来

二、解决方法

1.就离谱,之前用的好好的,另外一个项目也在用。对比后发现唯一的区别在于 一个项目使用的是 ant3.xxx,一个使用的ant4.xxx

2.有问题这个项目最近 把 ant从 3.xxx升级到 4.xxx了

3. ant3.xxx 可以正常使用 的版本

<template><!-- 数字输入框 --><AInput v-model:value="currentValue" v-bind="attrs" :allowClear="allowClear" @change="handleChange" />
</template><script lang="ts" setup>
import { useVModel } from '@vueuse/core'interface Props {value?: string | numberallowClear?: boolean
}
const props = defineProps<Props>()const emit = defineEmits(['update:value'])const currentValue = useVModel(props, 'value', emit)
const attrs = useAttrs()function handleChange(e: any) {const str = e.target.value ? String(e.target.value) : ''currentValue.value = str.replace(/\D+/g, '')
}
</script>

4.ant4.xxx 发现数字输入框显示上不能正常过滤 其他字符的修复版本, 手动设置 e.target.value的值

 修改:  e.target.value = currentValue.value

<template><!-- 数字输入框 --><AInput v-model:value="currentValue" v-bind="attrs" @change="handleChange" />
</template><script lang="ts" setup>
import { useVModel } from '@vueuse/core'interface Props {value?: string | number
}
const props = defineProps<Props>()const emit = defineEmits(['update:value'])const currentValue = useVModel(props, 'value', emit)
const attrs = useAttrs()function handleChange(e: any) {const str = e.target.value ? String(e.target.value) : ''currentValue.value = str.replace(/\D+/g, '')e.target.value = currentValue.value
}
</script>

5.ant4.xxx 发现某些输入法需要输入 两次才能显示一个数字,修改为watch监听

修改:change事件改为 watch监听 

function formatValue(value: string | number) {const str = value ? String(value) : ''currentValue.value = str.replace(/\D+/g, '')
}
watch(currentValue, (val: any) => {formatValue(val)
})
<template><!-- 数字输入框 --><AInput v-model:value="currentValue" v-bind="attrs" @change="handleChange" />
</template><script lang="ts" setup>
import { useVModel } from '@vueuse/core'interface Props {value?: string | number
}
const props = defineProps<Props>()const emit = defineEmits(['update:value'])const currentValue = useVModel(props, 'value', emit)
const attrs = useAttrs()function handleChange(e: any) {// const str = e.target.value ? String(e.target.value) : ''// currentValue.value = str.replace(/\D+/g, '')// e.target.value = currentValue.value ?? ''
}function formatValue(value: string | number) {const str = value ? String(value) : ''currentValue.value = str.replace(/\D+/g, '')
}
watch(currentValue, (val: any) => {formatValue(val)
})
</script>

三、总结

1. 修改显示不对倒是 比较简单啦

2.但是 某些输入法需要输入两次这个有点离谱呀,只能在笔记本上复现,不理解。闭着眼睛修改。

3.试了好多次没用,去看了ant-design官网有一个示例,让测试试了一下竟然没有问题!!!

4.于是照着官网 采用watch监听修复了问题。真是解铃还须系铃人

5.以后使用第三方库有问题,记得去官网看看哈!

6.ant-design的 input格式化建议参考官网使用 watch监听更新,以免遇到各种离谱的问题

7.但是搞不明白为什么,如有大佬知道,欢迎赐教!

/*

希望对你有帮助!

如有错误,欢迎指正!

*/

http://www.xdnf.cn/news/12345.html

相关文章:

  • MyBatis 核心标签使用场景及用法详解
  • Java中的this()和super()详解
  • 前端脱敏展示姓名、手机号、邮箱
  • 行为型设计模式之Chain of Responsibility(责任链)
  • 基于JWT+SpringSecurity整合一个单点认证授权机制
  • 低内聚高耦合的衡量指标
  • DTS 数据迁移
  • 在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
  • 【Python-Day 23】Python 模块化编程实战:创建、导入及 sys.path 深度解析
  • 青少年编程与数学 01-011 系统软件简介 06 Android操作系统
  • 相机Camera日志分析之二十七:高通相机Camx 基于预览1帧的process_capture_result二级日志分析详解
  • AOP实现Restful接口操作日志入表方案
  • 事件监听 ——CAD C#二次开发
  • ES6——数组扩展之Set数组
  • 接口限频算法:漏桶算法、令牌桶算法、滑动窗口算法
  • 小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo
  • 深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
  • 鸿蒙开发——如何修改模拟器的显示图标/标题
  • 车牌识别技术解决方案
  • day46打卡
  • 如何防止服务器被用于僵尸网络(Botnet)攻击 ?
  • 进一步探究synchronized
  • 408第一季 - 数据结构 - 线性表II
  • Redis哨兵模式
  • 获1.3亿美元融资,NewLimit利用机器学习指导表观遗传程序设计,延长人类健康寿命研究已有初级成果
  • 自建 dnslog 回显平台:渗透测试场景下的隐蔽回显利器
  • Webpack的基本使用 - babel
  • leetcode78. 子集
  • vue项目引入tailwindcss
  • 实战设计模式之模板方法模式