【发布时间】:2021-02-16 22:56:41
【问题描述】:
我正在使用FlatPickr Date/Time module 尝试仅在那些需要它的字段上实现monthSelect 插件。如何根据我传入的道具使插件选项“monthSelectPlugin”代码行有条件?
(参见 Flatpickrdatetime.jsx 中的 cmets)
下面的代码出现以下错误。另外,我确信有一种更好的方法可以使一行代码成为有条件的,我就在这里,只是不确定如何。
错误:
Error: Flatpickrdatetime(...): Nothing was returned from render.
This usually means a return statement is missing. Or, to render nothing, return null.
到达/离开页面:
import React from 'react';
import { Grid, Typography, FormControl} from '@material-ui/core';
import Flatpickrdatetime from './FormFields/Flatpickrdatetime';
<Grid container item spacing={3}>
<Grid item xs={12} md={6}>
<InputLabel shrink htmlFor="bootstrap-input">Arrival Date</InputLabel>
<Flatpickrdatetime type="monthSelect" />
</Grid>
<Grid item xs={12} md={6}>
<InputLabel shrink htmlFor="bootstrap-input">Depart Date</InputLabel>
<Flatpickrdatetime />
</Grid>
</Grid>
Flatpickrdatetime.jsx
/* https://flatpickr.js.org/examples/ */
import React from 'react';
import { fade, makeStyles } from '@material-ui/core/styles';
import "flatpickr/dist/themes/light.css";
import monthSelectPlugin from "flatpickr/dist/plugins/monthSelect/index.js";
import "flatpickr/dist/plugins/monthSelect/style.css";
import "flatpickr/dist/themes/light.css";
import Flatpickr from "react-flatpickr";
export default function Flatpickrdatetime(props) {
const useStyles = makeStyles((theme) => ({
root: {
display: 'flex',
flexWrap: 'wrap',
},
margin: {
marginTop: theme.spacing(3),
width:'100%'
},
flatpickr:{
marginBottom:'0.25em',
borderRadius: 4,
}
}));
const classes = useStyles();
{(() => {
if (props.type === 'monthSelect'){
return (
<Flatpickr
options={{
format: "m/d/Y",
altFormat: "m/d/Y",
altInput: true,
allowInput: true,
// if props.type equals monthSelect
plugins: [new monthSelectPlugin({shorthand: false, dateFormat: "Y-m-d", altFormat: "M Y"})]
}}
className={classes.flatpickr} />
);
}else if(props.type != 'monthSelect'){
return (
<Flatpickr
options={{
format: "m/d/Y",
altFormat: "m/d/Y",
altInput: true,
allowInput: true,
// no plugin if props.type does not equal monthSelect
}}
className={classes.flatpickr} />
);
}else{
return null;
}
})()}
}
【问题讨论】:
标签: reactjs if-statement flatpickr