Материал DateTimePicker onChange Ошибка несоответствия Typescript - PullRequest
1 голос
/ 18 июня 2020

У меня есть следующий код React + Material DatePicker, буквально воспроизведенный из соответствующей документации .

let App: React.FC = () => {

const [dateStart, handleDateStart] = useState(new Date());
const [dateEnd, handleDateEnd] = useState(new Date());

return (
    // Pickers from Material https://material-ui-pickers.dev/getting-started/usage
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
        <DateTimePicker value={dateStart} onChange={handleDateStart}/>
        <DateTimePicker value={dateEnd} onChange={handleDateEnd}/>)
    </MuiPickersUtilsProvider>);

};

Однако я пишу на TypeScript, и он жалуется на onChange бит:

Error:(28, 47) TS2322: Type 'Dispatch<SetStateAction<Date>>' is not assignable to type '(date: MaterialUiPickersDate) => void'.
Types of parameters 'value' and 'date' are incompatible.
 Type 'MaterialUiPickersDate' is not assignable to type 'SetStateAction<Date>'.
 Type 'null' is not assignable to type 'SetStateAction<Date>'.

TsConfig:

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react"
  },
  "include": [
    "src"
  ]
}

Я новичок в React и Material, как мне избежать этой ошибки?

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Проблема в том, что datepicker может также возвращать null (если значение пусто)

Рабочий пример:

const [date, setDate] = React.useState<Date | null>(new Date());

return (
  <DatePicker
    value={date} 
    onChange={newDate => setDate(newDate)} 
  />
)

0 голосов
/ 18 июня 2020

попробуйте useState<Date>(new Date()), чтобы избежать ошибок, проверьте тип машинописного текста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...