1

我想以编程方式打开/关闭 ExpandableCalendar。我发现只有一个initialPosition道具。更改时它不起作用initialPosition。所以我尝试使用setPosition()ExpandableCalendar 的 ref 和 call 函数

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

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

当我使用这段代码时,ref.current.contentRef总是undefined

我的问题是

  • 如何获得refExpandableCalendar?似乎asCalendarConsumer将 ref 保存为 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);
  • 有没有办法以编程方式打开 ExpandableCalendar?setPosition() 函数是否有效或者有另一种方法可以做到这一点。

我的环境是

  • react-native-calendars@1.1266.0
  • react-native@0.64.2
4

0 回答 0