我想以编程方式打开/关闭 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
我的问题是
- 如何获得
ref
ExpandableCalendar?似乎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
: