React-TypeScript:切换按钮不起作用

时间:2020-06-18 07:48:20

标签: onclick toggle onchange react-datepicker react-typescript

我正在为我的应用程序使用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>
      );
    };

0 个答案:

没有答案