0

我正在尝试TextField在对话框组件中使多行(正确)工作。

我一直在努力解决这个特定问题一段时间,我不确定这个问题是否与 MUI 相关,或者可能与我的页面(对话框)如何重新呈现反应有关。

请参阅链接的工作示例。这里

我也测试了许多其他方法,例如重组我的代码,在备忘录中包装东西等。但无济于事......

目前发生了 3 件事中的 1 件事。

1.) 没有自动对焦 => 无法输入

没有自动对焦

2.) 使用自动对焦 => 可以解决问题...当失去焦点时,输入会闪烁

带自动对焦

3.)使用自动对焦+多行...输入也失去焦点(重新获得焦点,但光标作为输入的开头)

自动对焦和多线

理论

我认为这可能是 React MUI 中的一个错误,并且已经为它创建了一个错误票,但我想排除它可能不是别的东西,例如我编写对话框代码的方式,例如,不是记住正确的事情,状态导致更新它不应该等等......

4

2 回答 2

0

问题与提取的Content内部组件有关......并且添加自动对焦通过在每次按键时将焦点添加回新创建的元素来掩盖问题。

我做了一个小测试,删除了所有内部代码块,只保留了基本的 jsx,问题就消失了。(也不再重新渲染,从而证实了我的怀疑)

然后我把它加回来,然后只记住了内容部分。

一旦我记住它,它就解决了所有重新渲染的问题。我不知道我最初是怎么错过的,但我把它写下来是为了迷失在寻找问题的过程中:/

  const Content = useMemo(
    () =>  <Grid>... previous jsx</Grid>,
    [
      ReasonChips,
      feedback.comment,
      feedback.reason,
      isEditing,
      onSubmitClick,
      ratingOptions.length,
    ]
  );
于 2020-04-08T11:57:50.020 回答
0

只需使用 DialogContent 包装您的输入

于 2021-09-02T10:43:06.050 回答