类组件转函数组件后的问题

时间:2020-12-22 16:21:45

标签: javascript reactjs react-native react-native-calendars

在将此文件中的所有内容转换为函数后,我遇到了一些错误,以便我能够使用钩子。

当我按下 calendarStrip 组件上的日期时出现此错误 "2020-12-22 is not a function

调用堆栈。告诉我问题出在 onDateSelected 上,您可以在下面的代码中找到它。 这让我想知道我是否搞砸了 useState 因为一切都在类组件中工作?

带有 USESTATE 和 CALENDARSTRIP 组件的代码

const [datesWhitelist] = useState([
    {
      start: moment(),
      end: moment().add(365, "days"),
    },
  ]);
  const [todoList] = useState([]);
  const [markedDate] = useState([]);
  const [currentDate] = useState(
    `${moment().format("YYYY")}-${moment().format("MM")}-${moment().format(
      "DD"
    )}`
  );
  const [selectedTask] = useState(null);
  const [isDateTimePickerVisible] = useState(false);
  const [createEventAsyncRes] = useState("");

<CalendarStrip
        calendarAnimation={{ type: "sequence", duration: 30 }}
        style={{
          height: 150,
          paddingTop: 20,
          paddingBottom: 20,
        }}
        calendarHeaderStyle={{ color: colors.text }}
        dateNumberStyle={{ color: colors.text, paddingTop: 10 }}
        dateNameStyle={{ color: colors.text }}
        highlightDateNumberStyle={{
          color: colors.text,
          backgroundColor: "#990000",
          marginTop: 10,
          height: 35,
          width: 35,
          textAlign: "center",
          borderRadius: 17.5,
          overflow: "hidden",
          paddingTop: 6,
          fontWeight: "400",
          justifyContent: "center",
          alignItems: "center",
        }}
        highlightDateNameStyle={{ color: colors.text }}
        disabledDateNameStyle={{ color: colors.text }}
        disabledDateNumberStyle={{ color: colors.text }}
        datesWhitelist={datesWhitelist}
        iconContainer={{ flex: 0.1 }}
        markedDates={markedDate}
        onDateSelected={(date) => {
          const selectedDate = `${moment(date).format("YYYY")}-${moment(
            date
          ).format("MM")}-${moment(date).format("DD")}`;
          _updateCurrentTask(selectedDate);
          currentDate(selectedDate);
        }}
      />

1 个答案:

答案 0 :(得分:2)

这就是问题所在:

currentDate(selectedDate);

你正在使用一个字符串作为一个函数,看看你如何在状态中声明它