【发布时间】:2021-12-16 02:47:35
【问题描述】:
我在 ScrollView 中传递了一个组件,并且在那里我也传递了 ref。
const GameMulti: FC<GameMultiProps> = ({ navigation }) => {
const scrollViewRef = useRef<ScrollView & scrollViewProps>(null);
// Should be:
// const scrollViewRef = useRef<ScrollView & React.RefObject<ScrollView>>(null);
...
<ScrollView
ref={scrollViewRef}
>
<DetailedAnswer
scrollViewRef={scrollViewRef}
/>
...
DetailedAnswer.tsx
export type scrollViewProps = {
current: {
scrollTo: ({ y, animated, }: { y: number, animated: boolean }) => { y: number, animated: boolean }
}
};
interface Props {
scrollViewRef: ScrollView & scrollViewProps
// Should be:
// scrollViewRef: React.RefObject<ScrollView>
}
const DetailedAnswer: FC<Props> = ({ scrollViewRef }) => {
if (scrollViewRef.current) // not needed
scrollViewRef.current?.scrollTo({ y: 0, animated: true });
我创建了scrollViewProps,因为来自react-native 的current 给了我一个错误。
但现在我在上面得到一个错误:
<DetailedAnswer
scrollViewRef={scrollViewRef}
/>
Type 'RefObject<ScrollView & scrollViewProps>' is not assignable to type 'ScrollView & scrollViewProps'.
Type 'RefObject<ScrollView & scrollViewProps>' is missing the following properties from type 'ScrollView': scrollTo, scrollToEnd, flashScrollIndicators, getScrollResponder, and 38 more.ts(2322)
DetailedAnswer.tsx(33, 3): The expected type comes from property 'scrollViewRef' which is declared here on type 'IntrinsicAttributes & Props & { children?: ReactNode; }'
【问题讨论】:
-
快速回答 - 这个
scrollViewRef不返回与scrollViewProps相同的类型 -scrollViewProps不是 RefObject,因此它缺少很多属性。这有帮助吗?还有其他问题吗?
标签: reactjs typescript react-native scrollview use-ref