You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native Formik中删除TextInput最后字符后键盘立即收起问题

解决Formik中TextInput删除最后一个字符后键盘收起的问题

可能的原因及解决方案:

  • 检查allowSubmission属性逻辑
    若allowSubmission的判断逻辑在输入框为空时触发了表单提交或焦点丢失操作,会导致键盘收起。临时注释该属性测试,若问题消失,调整其判断条件,确保输入框为空时不会触发提交或焦点变更。

  • 修复inputPattern与数字键盘的冲突
    搭配keyboardType: 'number-pad'使用inputPattern: onlyInt时,空值可能触发校验回调导致焦点丢失。可移除inputPattern测试,或修改正则允许空值(如/^$|^\d+$/),避免空值触发校验错误。

  • 手动强制保持焦点
    通过useRef获取TextInput引用,在输入值变为空时重新聚焦:

    const inputRef = useRef(null);
    
    const handleChange = (value) => {
      formik.setFieldValue('targetField', value);
      if (value === '') {
        setTimeout(() => {
          inputRef.current?.focus();
        }, 0);
      }
    };
    
    // 渲染组件
    <TextInput
      ref={inputRef}
      fieldKey="targetField"
      keyboardType="number-pad"
      onChange={handleChange}
      // 其他属性
    />
    
  • 排查validationSchema校验规则
    若校验规则在输入框为空时触发同步校验并引发状态变更,可能导致输入框失焦。临时注释validationSchema测试,若问题消失,调整规则为允许空值(如添加nullable: true)。

  • 验证withoutScrollView的影响
    不使用ScrollView包裹表单时,焦点管理可能异常。尝试移除withoutScrollView,用ScrollView包裹表单,观察问题是否解决。

内容的提问来源于stack exchange,提问作者Sami Siam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:20:38