React Native文本输入类型=“数字”,但默认值必须为字符串

uz75evzq  于 2023-03-19  发布在  React
关注(0)|答案(1)|浏览(145)

在我的React Native应用程序中,我有一个type="numeric"的TextInput。当页面加载时,我从服务器获得一个数字值,我将使用defaultValue在TextInput中预填充该值。

const [ val, setVal ] = useState(100)

<TextInput
  defaultValue={val}
  onChange={setVal}
  type="numeric"
  value={val}
/>

这将抛出一个错误,指出defaultValue只能是字符串或未定义。

  • 我是否应该将服务器的值设置为字符串,然后在将其发送到服务器之前将其设置回number?
  • 如果我设置了type="numeric",那是不是会把数字和字符串混在一起,或者数字仍然只是在一个字符串中?
  • 为什么RN不允许defaultValue这样的数字?
0yg35tkg

0yg35tkg1#

我自己也想知道这一点。这可能与javascript和任何语言(如Java/Kotlin/Swift)的数字类型之间的差异有关。我认为会有一种数字类型类似于javascript的数字(在java中,我认为这可能是doublefloat),但由于textinput不支持它,我认为事情并不像看起来那么简单。
如果你想让你的州保持数字类型,那么只需要在onChangeText中强制转换为number,并对valuedefaultValue使用toString:

<TextInput
  defaultValue={val.toString()}
  onChange={text=>{
     const num = parseFloat(text)
    //  make sure user havent found a way
    // to overcome the numeric keyboard limitations
    if(isNaN(num)){
      console.log(text)
      return
    }
    setVal(num)
  }
  type="numeric"
  value={val.toString()}
/>

相关问题