nutui-react icon indicating copy to clipboard operation
nutui-react copied to clipboard

Form 中使用 Input 会自动失焦导致无法输入

Open zhangminggeek opened this issue 1 year ago • 13 comments

NutUI React 包名

@nutui/nutui-react-taro

NutUI React 版本号

2.7.4

平台

weapp

重现链接

https://codesandbox.io/p/sandbox/nutui-react-2x-demo-fg4vxd?file=/src/App.tsx

重现步骤

<Form labelPosition="left" divider>
      <Form.Item
        label="手机号"
        name="account"
        rules={[{ required: true, message: '请输入手机号' }]}
        required={false}
      >
        <Input />
      </Form.Item>
    </Form>

现象:点击 Input,发现 Input 自动失焦,无法输入内容

之前使用 2.7.0 版本没有这个问题,更新到 2.7.4 之后出现

期望的结果是什么?

能正常使用 Input

实际的结果是什么?

Input 无法输入

环境信息

No response

其他补充信息

No response

zhangminggeek avatar Dec 31 '24 02:12 zhangminggeek

退回 2.7.0 版本 Input 使用正常

zhangminggeek avatar Dec 31 '24 03:12 zhangminggeek

遇到相同的问题

HugoVince avatar Jan 07 '25 02:01 HugoVince

image Taro 3.6.35,NutUI 2.7.4 无法复现问题。 可以提供下具体的 Taro 版本

oasis-cloud avatar Jan 14 '25 02:01 oasis-cloud

https://github.com/oasis-cloud/nutui-react-taro3x-demo.git 在这个仓库中没复现出来,可以给这个仓库提交一个 demo 的 PR 吗?

oasis-cloud avatar Jan 14 '25 02:01 oasis-cloud

@oasis-cloud 问题应该出在 focus={autoFocus},focus 是受控的,autoFocus 一直 false 的话就无法聚焦,直接用 active 就没问题了

HugoVince avatar Jan 15 '25 06:01 HugoVince

@YeYbfwad

<Form.Item name="test">
	<Input focus={autoFocus} />
</Form.Item>

是说这种情况吗?

oasis-cloud avatar Jan 15 '25 06:01 oasis-cloud

@oasis-cloud 不是,是 Input 源码focus字段的赋值有问题,源码是 focus={autoFocus},但autoFocus 是 props 传参,默认值是 false,导致 focus 一直都是 false,视图更新后,就自动 blur 了

HugoVince avatar Jan 15 '25 06:01 HugoVince

@YeYbfwad 按照 issue 中说的 “2.7.0 版本没有这个问题”,2.7.0 之后的版本中 Input 的实现一直是 focus={autoFocus}。你可以提供一份 Demo,以及操作的录屏吗?

oasis-cloud avatar Jan 15 '25 06:01 oasis-cloud

@oasis-cloud 写的 demo 暂时复现不出来,比较奇怪,目前发现的现象是 input 的 style 都会变成[object,object],就会出现这种问题,但感觉像是 focus 字段赋值的问题 image

HugoVince avatar Jan 15 '25 06:01 HugoVince

问题依旧在,我的Input层级:Cell.Group>Cell>Dialog>Form>Form.Item>Input,发现去除Cell.Group后焦点正常?(非100%成功,折腾了一天,已放弃),已按以下方法跳过此使用: https://github.com/jdf2e/nutui-react/issues/2323#issuecomment-2574289117

wsve avatar Feb 08 '25 06:02 wsve

Image 我的是 Popup 中加Form 就有这个问题, 但是正常页面不存在, 无法输入聚焦后直接失去焦点

JoeABCDEF avatar Feb 21 '25 01:02 JoeABCDEF

遇到了同样问题,经过排查后发现input组件一旦嵌套超过13层,就会出现上述问题

hear-tide avatar Feb 21 '25 12:02 hear-tide

就是版本问题。我原来的版本是2.3.10,后来升到了2.7以上就不行了,退回原版本正常了

lijianhu1 avatar Mar 13 '25 08:03 lijianhu1

确实可能是由于嵌套过多引起的,嵌套了过多后会增加了一层节点,改变了原来的context,导致原来组件的一些方法失效了,所以就无法输入了(但原生的 Input 组件可以正常输入)。

KuangPF avatar Apr 15 '25 10:04 KuangPF

我封装的自定义表单组件,就会出现这个问题。用Taro 原生Input 就没这个问题

hanxinimm avatar Apr 16 '25 10:04 hanxinimm