材质 UI 日期范围选择器

use*_*364 5 reactjs material-ui

我正在尝试按照文档上的代码设置一个材料 ui 日期范围选择器示例,但它给了我一个错误,TypeError: undefined is not a function。

我以前从未见过 useState 后面跟着一个组件,这就是抛出错误的原因。

React.useState<DateRange>([null, null])

https://dev.material-ui-pickers.dev/demo/daterangepicker

完整代码:

import * as React from "react";
import { TextField } from "@material-ui/core";
import { DateRangePicker, DateRange, DateRangeDelimiter } from "@material-ui/pickers";

function BasicDateRangePicker() {
  const [selectedDate, handleDateChange] = React.useState<DateRange>([null, null]);

  return (
    <DateRangePicker
      startText="Check-in"
      endText="Check-out"
      value={selectedDate}
      onChange={date => handleDateChange(date)}
      renderInput={(startProps, endProps) => (
        <>
          <TextField {...startProps} />
          <DateRangeDelimiter> to </DateRangeDelimiter>
          <TextField {...endProps} />
        </>
      )}
    />
  );
}

export default BasicDateRangePicker;
Run Code Online (Sandbox Code Playgroud)

Dek*_*kel 0

DateRangePicker组件还需要 ,DateFnsAdapter并且整个块应该用 包裹起来LocalizationProvider

您的代码应如下所示:

import React from 'react';
import { TextField } from "@material-ui/core";
import DateFnsAdapter from '@material-ui/pickers/adapter/date-fns'; // choose your lib
import { DateRangePicker, DateRange, DateRangeDelimiter, LocalizationProvider } from "@material-ui/pickers";


function BasicDateRangePicker() {
  const [selectedDate, handleDateChange] = React.useState<DateRange>([null, null]);

  return (
    <LocalizationProvider dateAdapter={DateFnsUtils}>
      <DateRangePicker
        startText="Check-in"
        endText="Check-out"
        value={selectedDate}
        onChange={date => handleDateChange(date)}
        renderInput={(startProps, endProps) => (
          <>
            <TextField {...startProps} />
            <DateRangeDelimiter> to </DateRangeDelimiter>
            <TextField {...endProps} />
          </>
        )}
      />
    </LocalizationProvider>
  );
}

export default BasicDateRangePicker;
Run Code Online (Sandbox Code Playgroud)

dateAdapter您可以在快速入门和安装中阅读有关 的更多信息。