NervJS / taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
https://docs.taro.zone/
Other
35.37k stars 4.78k forks source link

input 组件 value 问题 #10632

Open facadesss opened 2 years ago

facadesss commented 2 years ago

相关平台

字节跳动小程序

小程序基础库: 3.3.7 使用框架: React

复现步骤

支持设置 input 的 type 为 number,但 value 只可以是 string 类型,这不是矛盾吗

期望结果

支持 value 为 number 类型

实际结果

只能是 string 类型

环境信息

Taro v3.3.5

  Taro CLI 3.3.5 environment info:
    System:
      OS: macOS 11.3.1
      Shell: 5.8 - /bin/zsh
    Binaries:
      Node: 14.17.1 - /usr/local/bin/node
      Yarn: 1.22.15 - ~/.yarn/bin/yarn
      npm: 7.18.1 - /usr/local/bin/npm
    npmPackages:
      @tarojs/cli: ^3.3.0 => 3.3.9 
      @tarojs/components: ^3.3.7 => 3.3.9 
      @tarojs/mini-runner: 3.3.0 => 3.3.0 
      @tarojs/react: 3.3.0 => 3.3.0 
      @tarojs/runtime: 3.3.0 => 3.3.0 
      @tarojs/taro: 3.3.0 => 3.3.0 
      @tarojs/webpack-runner: 3.3.0 => 3.3.0 
      babel-preset-taro: 3.3.0 => 3.3.0 
      eslint-config-taro: 3.3.0 => 3.3.0 
      react: ^17.0.0 => 17.0.2 
      taro-ui: 3.0.0-alpha.10 => 3.0.0-alpha.10 
    npmGlobalPackages:
      typescript: 4.3.4
TheKonka commented 2 years ago

说下 我个人 粗浅 的理解, Input 组件 中 这个 number type extend "number" | "text" | "idcard" | "digit" , 作用是限定 Input 组件 调起 的键盘 只能输入数字; 至于 value 类型为string 的原因,因为 数据存储统一用字符串方便, 过长的数字 用 number类型 会表现异常

facadesss commented 2 years ago

限制只输入数字,缺陷就是也会出现002这样的情况,不过也算勉强能够接受了

TheKonka commented 2 years ago

限制只输入数字,缺陷就是也会出现002这样的情况,不过也算勉强能够接受了

这种情况 可以通过代码强制修改,效果比如 微信-收付款-二维码收款-设置金额