Reactjs 物料Ui日期选择器出现错误:应为字符串

Reactjs 物料Ui日期选择器出现错误:应为字符串,reactjs,material-ui,Reactjs,Material Ui,我正在尝试使用材质UI的日期选择器在React项目中实现日期选择器。我最初试着按照网站上说的做。在这不起作用之后,我尝试了一种更简单的方法,并尝试了网站所说的。这两种方法都会产生以下错误: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot t

我正在尝试使用材质UI的日期选择器在React项目中实现日期选择器。我最初试着按照网站上说的做。在这不起作用之后,我尝试了一种更简单的方法,并尝试了网站所说的。这两种方法都会产生以下错误:

Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.

Check the render method of `AddScreen`.

My CodeSandbox链接:(Datepicker在/Screens/AddScreen.js中实现)

您的代码中有两个问题:

  • 包不匹配:
  • 相反,您需要使用这些:

    "@date-io/date-fns": "v1",
        "@material-ui/core": "latest",
        "@material-ui/icons": "latest",
        "@material-ui/pickers": "latest",
    
    
  • 要使用
    KeyboardTimePicker
    ,您还需要提供不存在的
    MuiPickersUtilsProvider
  • 下面是添加屏幕的代码

    import "date-fns";
    import React from "react";
    import Grid from "@material-ui/core/Grid";
    import DateFnsUtils from "@date-io/date-fns";
    import {
      MuiPickersUtilsProvider,
      KeyboardTimePicker,
      KeyboardDatePicker
    } from "@material-ui/pickers";
    
    export default function MaterialUIPickers() {
      // The first commit of Material-UI
      const [selectedDate, setSelectedDate] = React.useState(
        new Date("2014-08-18T21:11:54")
      );
    
      const handleDateChange = (date) => {
        setSelectedDate(date);
      };
    
      return (
        <MuiPickersUtilsProvider utils={DateFnsUtils}>
          <Grid container justify="space-around">
            <KeyboardDatePicker
              disableToolbar
              variant="inline"
              format="MM/dd/yyyy"
              margin="normal"
              id="date-picker-inline"
              label="Date picker inline"
              value={selectedDate}
              onChange={handleDateChange}
              KeyboardButtonProps={{
                "aria-label": "change date"
              }}
            />
            <KeyboardDatePicker
              margin="normal"
              id="date-picker-dialog"
              label="Date picker dialog"
              format="MM/dd/yyyy"
              value={selectedDate}
              onChange={handleDateChange}
              KeyboardButtonProps={{
                "aria-label": "change date"
              }}
            />
            <KeyboardTimePicker
              margin="normal"
              id="time-picker"
              label="Time picker"
              value={selectedDate}
              onChange={handleDateChange}
              KeyboardButtonProps={{
                "aria-label": "change time"
              }}
            />
          </Grid>
        </MuiPickersUtilsProvider>
      );
    }
    
    
    导入“日期fns”;
    从“React”导入React;
    从“@material ui/core/Grid”导入网格;
    从“@date io/date fns”导入DateFnsUtils;
    进口{
    MuiPickersUtilsProvider,
    键盘时间选择器,
    键盘日期选择器
    }来自“@物料界面/选择器”;
    导出默认函数MaterialUIPackers(){
    //物料界面的第一次提交
    常量[selectedDate,setSelectedDate]=React.useState(
    新日期(“2014-08-18T21:11:54”)
    );
    const handleDateChange=(日期)=>{
    设置选定日期(日期);
    };
    返回(
    );
    }
    

    下面是正在运行的演示:

    您的代码中有两个问题:

  • 包不匹配:
  • 相反,您需要使用这些:

    "@date-io/date-fns": "v1",
        "@material-ui/core": "latest",
        "@material-ui/icons": "latest",
        "@material-ui/pickers": "latest",
    
    
  • 要使用
    KeyboardTimePicker
    ,您还需要提供不存在的
    MuiPickersUtilsProvider
  • 下面是添加屏幕的代码

    import "date-fns";
    import React from "react";
    import Grid from "@material-ui/core/Grid";
    import DateFnsUtils from "@date-io/date-fns";
    import {
      MuiPickersUtilsProvider,
      KeyboardTimePicker,
      KeyboardDatePicker
    } from "@material-ui/pickers";
    
    export default function MaterialUIPickers() {
      // The first commit of Material-UI
      const [selectedDate, setSelectedDate] = React.useState(
        new Date("2014-08-18T21:11:54")
      );
    
      const handleDateChange = (date) => {
        setSelectedDate(date);
      };
    
      return (
        <MuiPickersUtilsProvider utils={DateFnsUtils}>
          <Grid container justify="space-around">
            <KeyboardDatePicker
              disableToolbar
              variant="inline"
              format="MM/dd/yyyy"
              margin="normal"
              id="date-picker-inline"
              label="Date picker inline"
              value={selectedDate}
              onChange={handleDateChange}
              KeyboardButtonProps={{
                "aria-label": "change date"
              }}
            />
            <KeyboardDatePicker
              margin="normal"
              id="date-picker-dialog"
              label="Date picker dialog"
              format="MM/dd/yyyy"
              value={selectedDate}
              onChange={handleDateChange}
              KeyboardButtonProps={{
                "aria-label": "change date"
              }}
            />
            <KeyboardTimePicker
              margin="normal"
              id="time-picker"
              label="Time picker"
              value={selectedDate}
              onChange={handleDateChange}
              KeyboardButtonProps={{
                "aria-label": "change time"
              }}
            />
          </Grid>
        </MuiPickersUtilsProvider>
      );
    }
    
    
    导入“日期fns”;
    从“React”导入React;
    从“@material ui/core/Grid”导入网格;
    从“@date io/date fns”导入DateFnsUtils;
    进口{
    MuiPickersUtilsProvider,
    键盘时间选择器,
    键盘日期选择器
    }来自“@物料界面/选择器”;
    导出默认函数MaterialUIPackers(){
    //物料界面的第一次提交
    常量[selectedDate,setSelectedDate]=React.useState(
    新日期(“2014-08-18T21:11:54”)
    );
    const handleDateChange=(日期)=>{
    设置选定日期(日期);
    };
    返回(
    );
    }
    
    以下是工作演示: