当以编程方式设置 TextField 的值时,Material UI TextField 标签不会向上移动

Ale*_*min 20 reactjs material-ui react-hook-form

我有一个TextField连接到的元素react-hook-form。当我专注于该输入时,我会打开一个国家/地区列表,以便我可以选择一个国家/地区,通过 中的setValue函数将其电话代码填充到该字段中react-hook-form

一切正常,国家/地区代码确实出现在字段中,但手动输入文本时通常向上移动的标签不会向上移动。

这是它的样子 在此输入图像描述

小智 14

当我在reactjs项目中以编程方式更新文本字段值时,我也遇到了同样的问题,对我有用的是使用javascript三元运算符,如下面的代码所示:

const [name,setName]=useState('')

somefunction = () => setName('abc')

        <TextField
          required
          variant="outlined"
          label="...some label..."
          // value={name} instead of this line write below line
          **value={name ? name : ''}**
          onchange={...somefunction...}
        />
Run Code Online (Sandbox Code Playgroud)

  • 当初始值为“null”时,标签更新时不会缩小。(参见 https://github.com/mui/material-ui/issues/13013)。 (2认同)
  • 这应该是正确的答案(或者,一个简化的版本: value ?? ''),当初始值未定义时,react 将其视为不受控制,然后它切换到受控(这是不支持的),通过始终填充它允许的值反应知道这是一个受控组件,然后可以正常工作。 (2认同)

小智 10

添加这个

InputLabelProps={{ shrink: true }}
Run Code Online (Sandbox Code Playgroud)

到您的 TextField 属性。

  • 在这种情况下,您将不会得到想要的结果。对于普通的 TextField,如果它是空的并且您模糊了该字段,则标签将不会缩小,并且您需要添加额外的检查来检查不正确的内容。 (3认同)