Reactjs 如何使自定义文本字段材质ui选择器的焦点稳定?

Reactjs 如何使自定义文本字段材质ui选择器的焦点稳定?,reactjs,material-ui,Reactjs,Material Ui,当我将自定义文本字段传递给日期选择器时,每次键盘输入后焦点都会丢失。如何解决这个问题 沙盒示例 价值 ? [/\d/,/\d/,“,/\d/,/\d/,”,/\d/,/\d/,/\d/,/\d/,/\d/] : [] } 值={selectedDate?时刻(selectedDate):null} onChange={date=>{ 处理日期变更(日期); setFormattedValue(日期格式(“DD.MM.YYYY”); }} 错误={!!errorText} helperText=

当我将自定义文本字段传递给日期选择器时,每次键盘输入后焦点都会丢失。如何解决这个问题

沙盒示例


价值
? [/\d/,/\d/,“,/\d/,/\d/,”,/\d/,/\d/,/\d/,/\d/,/\d/]
: []
}
值={selectedDate?时刻(selectedDate):null}
onChange={date=>{
处理日期变更(日期);
setFormattedValue(日期格式(“DD.MM.YYYY”);
}}
错误={!!errorText}
helperText={errorText}
TextFieldComponent={props=>(
setFormattedValue(event.target.value)}
/>
)}
/>```

问题出在
文本字段
onChange
函数中。如果删除此属性,您将看到它停止失去焦点。可能是因为每次您输入数字并跟随,
Override input component
,都会呈现
TextFieldComponent
函数,这使得它失去焦点,因为每次都重新创建输入。

问题在于
TextField
onChange
函数。如果删除此属性,您将看到它停止失去焦点。这可能是因为每次您在输入组件
之后输入数字时,都会呈现
TextFieldComponent
函数,这使得它失去了焦点,因为每次都要重新创建输入。

我对自定义文本字段使用了onInputChange属性而不是onChange属性,在键盘输入后,焦点仍然会丢失,我知道可能您无法更改,但我会使用最新版本的material ui picker。你可以在这里查看:它没有自定义TextFieldComponent就可以工作,但我正在尝试使用自定义TextFieldComponent对其进行排序。我使用了自定义文本字段的onInputChange属性而不是onChange属性,在键盘输入后焦点仍然丢失。我知道也许你无法更改,但我会使用最新版本的material ui picker。您可以在这里查看:它在没有自定义TextFieldComponent的情况下工作,但我正在尝试使用自定义TextFieldComponent进行分类
  <DatePicker
     keyboard
     label="Masked input"
     format="DD.MM.YYYY"
     mask={value =>
       value
         ? [/\d/, /\d/, ".", /\d/, /\d/, ".", /\d/, /\d/, /\d/, /\d/]
         : []
     }
     value={selectedDate ? moment(selectedDate) : null}
     onChange={date => {
       handleDateChange(date);
       setFormattedValue(date.format("DD.MM.YYYY"));
     }}
     error={!!errorText}
     helperText={errorText}
     TextFieldComponent={props => (
       <TextField
         {...props}
         value={formattedValue}
         onChange={event => setFormattedValue(event.target.value)}
       />
     )}
   />```