我正在为我的应用程序使用React-typescript。我使用react-datepicker库选择日期。我想制作Datepicker组件,因此可以将其用于其他组件。我使用了按钮切换功能,默认情况下显示“选择日期”。选择日期后,我想填充按钮内的选择日期。但是在选择日期后,它不会填充日期,而只会显示“选择日期”。我正在使用onChange选择日期。我的onChange正常工作。仅onClick函数不起作用。是因为handleChange函数,所以onClick函数不起作用?
这是我的Datepicker组件
import React from "react";
import DatePicker, { ReactDatePickerProps } from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import moment from "moment";
import { Button } from "components/buttons";
export interface IDatepicker {
value?: Date;
onBlur?: (i: React.FocusEvent<HTMLInputElement>) => void;
onFocus?: (i: React.FocusEvent<HTMLInputElement>) => void;
onChange: (i: Date) => void;
buttonComponent?: JSX.Element;
withPortal?: boolean;
showTimeSelect?: boolean;
dateFormat?: string;
timeFormat?: string;
}
export default ({
value,
onChange,
onBlur,
onFocus,
buttonComponent,
withPortal = false,
showTimeSelect = false,
dateFormat = "MMMM d, yyyy h:mm aa",
timeFormat = "HH:mm"
}: IDatepicker) => {
const handleChange = (date: Date | null) => {
date && onChange(date);
};
const [choose, setChoose] = React.useState(false)
return (
<div style={{ display: "flex" }}>
<DatePicker
selected={value}
onChange={handleChange}
showTimeSelect={showTimeSelect}
dateFormat={dateFormat}
timeFormat={timeFormat}
customInput={
<Button onClick={() => setChoose(choose => !choose)}>
{choose ? moment(value)
.format("MMMM Do YYYY")
.toString() : "choose date"}
</Button>
}
/>
</div>
);
};
这是我正在使用日期选择器的组件
import React from "react";
import TimeLine from "components/datepicker";
export default () => {
const [state, setState] = useState(new Date());
return (
<div>
<TimeLine
value={state}
onChange={setState}
/>
</div>
);
};