如何将空值传递给 DatePicker 并避免输入阻塞?

som*_*one 6 reactjs material-ui

当我将 DatePicker 的初始值设置为 null 时,它会阻止键盘输入。如何避免?沙盒示例https://codesandbox.io/embed/silly-black-y0dn7

function KeyboardDatePicker(props) {
  const [selectedDate, handleDateChange] = useState(null);

  return (
    <MuiPickersUtilsProvider utils={MomentUtils}>
      <DatePicker
        keyboard
        clearable
        label="Masked input"
        format="DD.MM.YYYY"
        mask={value =>
          value
            ? [/\d/, /\d/, ".", /\d/, /\d/, ".", /\d/, /\d/, /\d/, /\d/]
            : []
        }
        value={moment(selectedDate)}
        onChange={date => {
          handleDateChange(date);
        }}
        disableOpenOnEnter
        animateYearScrolling={false}
      />
    </MuiPickersUtilsProvider>
  );
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ark 11

尝试从一个有效的日期对象而不是像这样的 null 开始

  const [selectedDate, handleDateChange] = useState(new Date());
Run Code Online (Sandbox Code Playgroud)

或者,如果您希望从空白日期开始,这应该有效:

  const [selectedDate, handleDateChange] = useState(null);
...
        value={selectedDate ? moment(selectedDate) : null}


Run Code Online (Sandbox Code Playgroud)

  • 是否可以传递空值?new Date() - 用当前日期填充 (3认同)
  • 如果我使用第二个选项,它的行为就像我从未首先提供初始值一样,并且它会引发警告“组件正在更改要控制的文本类型的不受控制的输入”。用户实际选择日期后 (2认同)
  • 关于material-ui-pickers.dev/demo/datepicker V.3.2.9:null默认为空白,未定义默认为当前日期 (2认同)