From 8d3d5183c3ada48f8a4039f2b1b877a7fcf2d48b Mon Sep 17 00:00:00 2001 From: Inbal Tish <33805983+Inbal-Tish@users.noreply.github.com> Date: Thu, 3 Mar 2022 15:29:38 +0200 Subject: [PATCH 1/2] Adding missing dependencies to callbacks --- src/calendar/day/basic/index.tsx | 14 ++++++++------ src/calendar/header/index.tsx | 4 ++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/calendar/day/basic/index.tsx b/src/calendar/day/basic/index.tsx index fe1ed83ee7..8d1b61130f 100644 --- a/src/calendar/day/basic/index.tsx +++ b/src/calendar/day/basic/index.tsx @@ -1,7 +1,7 @@ import XDate from 'xdate'; import values from 'lodash/values'; import PropTypes from 'prop-types'; -import React, {Fragment, useCallback, useRef} from 'react'; +import React, {Fragment, useCallback, useRef, useMemo} from 'react'; import {TouchableOpacity, Text, View, ViewProps} from 'react-native'; import {xdateToData} from '../../../interface'; @@ -52,7 +52,6 @@ const BasicDay = (props: BasicDayProps) => { testID } = props; const style = useRef(styleConstructor(theme)); - const dateData = useRef(date ? xdateToData(new XDate(date)) : undefined); const _marking = marking || {}; const isSelected = _marking.selected || state === 'selected'; const isDisabled = typeof _marking.disabled !== 'undefined' ? _marking.disabled : state === 'disabled'; @@ -61,6 +60,9 @@ const BasicDay = (props: BasicDayProps) => { const isMultiDot = markingType === Marking.markings.MULTI_DOT; const isMultiPeriod = markingType === Marking.markings.MULTI_PERIOD; const isCustom = markingType === Marking.markings.CUSTOM; + const dateData = useMemo(() => { + return date ? xdateToData(new XDate(date)) : undefined; + }, [date]); const shouldDisableTouchEvent = () => { const {disableTouchEvent} = _marking; @@ -126,12 +128,12 @@ const BasicDay = (props: BasicDayProps) => { }; const _onPress = useCallback(() => { - onPress?.(dateData.current); - }, [onPress]); + onPress?.(dateData); + }, [onPress, date]); const _onLongPress = useCallback(() => { - onLongPress?.(dateData.current); - }, [onLongPress]); + onLongPress?.(dateData); + }, [onLongPress, date]); const renderMarking = () => { const {marked, dotColor, dots, periods} = _marking; diff --git a/src/calendar/header/index.tsx b/src/calendar/header/index.tsx index 9ab863c8f3..37ea98f61f 100644 --- a/src/calendar/header/index.tsx +++ b/src/calendar/header/index.tsx @@ -121,14 +121,14 @@ const CalendarHeader = forwardRef((props: CalendarHeaderProps, ref) => { return onPressArrowLeft(subtractMonth, month); } return subtractMonth(); - }, [onPressArrowLeft, subtractMonth]); + }, [onPressArrowLeft, subtractMonth, month]); const onPressRight = useCallback(() => { if (typeof onPressArrowRight === 'function') { return onPressArrowRight(addMonth, month); } return addMonth(); - }, [onPressArrowRight, addMonth]); + }, [onPressArrowRight, addMonth, month]); const onAccessibilityAction = (event: AccessibilityActionEvent) => { switch (event.nativeEvent.actionName) { From a2fba9a71f7cad1a9a2a588048cbe0c720baa819 Mon Sep 17 00:00:00 2001 From: Inbal Tish <33805983+Inbal-Tish@users.noreply.github.com> Date: Thu, 3 Mar 2022 17:04:25 +0200 Subject: [PATCH 2/2] removing memo --- src/calendar/day/basic/index.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/calendar/day/basic/index.tsx b/src/calendar/day/basic/index.tsx index 8d1b61130f..6b763f4a61 100644 --- a/src/calendar/day/basic/index.tsx +++ b/src/calendar/day/basic/index.tsx @@ -1,7 +1,7 @@ import XDate from 'xdate'; import values from 'lodash/values'; import PropTypes from 'prop-types'; -import React, {Fragment, useCallback, useRef, useMemo} from 'react'; +import React, {Fragment, useCallback, useRef} from 'react'; import {TouchableOpacity, Text, View, ViewProps} from 'react-native'; import {xdateToData} from '../../../interface'; @@ -60,9 +60,7 @@ const BasicDay = (props: BasicDayProps) => { const isMultiDot = markingType === Marking.markings.MULTI_DOT; const isMultiPeriod = markingType === Marking.markings.MULTI_PERIOD; const isCustom = markingType === Marking.markings.CUSTOM; - const dateData = useMemo(() => { - return date ? xdateToData(new XDate(date)) : undefined; - }, [date]); + const dateData = date ? xdateToData(new XDate(date)) : undefined; const shouldDisableTouchEvent = () => { const {disableTouchEvent} = _marking;