V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
conankenan
V2EX  ›  前端开发

求助!React 实现虚拟键盘后如何更新 Input 值的问题 跪求大佬解惑

  •  
  •   conankenan · 85 天前 · 733 次点击
    这是一个创建于 85 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本来是做的 React 传统 pc 端 web 应用,但是业务需求有进工厂用触摸屏的操作,场景变成了套壳 webview,因此所有的输入框都会唤起原生的安卓键盘直接挡住大部分屏幕内容,领导和安卓人员沟通无果,提出禁用安卓键盘弹出,让我搞个页面上的虚拟键盘点击输入,目前使用的 react-simple-keyboard,现在的问题是我在顶层组件监听全局聚焦事件 document.addEventListener('focusin', handleFocus) 然后唤出虚拟键盘组件,通过 event.target.value 更新值,但是因为 React 在管理状态,没办法调用到 setState 或者说 Form.setFields,所以通过 target.value 改了值以后,下次触发 React 更新直接会把值重置,求解怎么更新状态呀!!!当然如果直接把键盘组件写到每个业务表单代码同级上下文就没这些问题,可是这么多页面这么多表单组件不可能一个个去绑定吧 求助!!

    2 条回复    2024-09-11 12:25:28 +08:00
    Wetoria
        1
    Wetoria  
       84 天前
    你说的 setState 是虚拟组件内部的,还是自己定义的。
    Baymaxbowen
        2
    Baymaxbowen  
       84 天前 via iPhone
    你的输入组件受控直接改变 targetvalue 没有用,你的方向应该是在触发系统键盘时页面要整体上移
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5927 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:30 · PVG 10:30 · LAX 18:30 · JFK 21:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.