1

I want to open/close ExpandableCalendar programmatically. I found there's only an initialPosition prop. It's not working when changing initialPosition. So I tried to use ref and call setPosition() function of ExpandableCalendar

export const MyScreen = () => {
  const ref = useRef<ExpandableCalendar>()

  return (
      <CalendarProvider date={new Date()}>
          <ExpandableCalendar ref={ref} />
      </CalendarProvider>
  )
}

when I use this code, the ref.current.contentRef is always undefined

My Question is

  • How to get the ref of ExpandableCalendar? It seems the asCalendarConsumer saves the ref as contentRef:
function asCalendarConsumer(
  WrappedComponent: React.ComponentType<any>
): React.ComponentClass {
  class CalendarConsumer extends Component {
    contentRef: any;

    saveRef = (r: Ref<React.Component<any>>) => {
      this.contentRef = r;
    };

    render() {
      return (
        <CalendarContext.Consumer>
          {(context) => (
            <WrappedComponent
              ref={this.contentRef}
              context={context}
              {...this.props}
            />
          )}
        </CalendarContext.Consumer>
      );
    }
  }

  hoistNonReactStatic(CalendarConsumer, WrappedComponent);

  return CalendarConsumer;
}

export default asCalendarConsumer;
/* ExpandableCalendar */
export default asCalendarConsumer(ExpandableCalendar);
  • Is there a way to open ExpandableCalendar programmatically? Does the setPosition() function work or there's another way to do this.

My Environment is

  • react-native-calendars@1.1266.0:
  • react-native@0.64.2:
Kartikey
  • 4,516
  • 4
  • 15
  • 40
Allen Shaw
  • 1,164
  • 7
  • 23

0 Answers0