React createRef 不可分配给 React Native Actions Sheet ref prop 中的 MutableRefObject 类型

Posted

技术标签:

【中文标题】React createRef 不可分配给 React Native Actions Sheet ref prop 中的 MutableRefObject 类型【英文标题】:React createRef not assignable to type MutableRefObject in React Native Actions Sheet ref prop 【发布时间】:2021-10-15 20:19:33 【问题描述】:

我正在使用最近添加了 Typescript 支持的 react-native-actions-sheet v0.5.1:

export default function MyFunc()
   const actionSheetRef = createRef<ActionSheet>()
   useEffect(() => 
        actionSheetRef.current?.setModalVisible(props.open)
   , [props.open])
   return (
        <>
            <ActionSheet
                ref=actionSheetRef
                onClose=props.onClose
            >
            // more code here  ....
        <>)

但是对于新版本,现在我的代码在 &lt;ActionSheet&gt; 内的引用上出现 Typescript 错误:

Type 'RefObject<ActionSheet>' is not assignable to type '(string & MutableRefObject< setModalVisible(visible?: boolean | undefined): void; show(): void; hide(): void; handleChildScrollEnd(): void; snapToOffset(offset: number): void; >) | (RefObject<...> & MutableRefObject<...>) | (((instance: ActionSheet | null) => void) & MutableRefObject<...>) | undefined'.
  Type 'RefObject<ActionSheet>' is not assignable to type '((instance: ActionSheet | null) => void) & MutableRefObject< setModalVisible(visible?: boolean | undefined): void; show(): void; hide(): void; handleChildScrollEnd(): void; snapToOffset(offset: number): void; >'.
    Type 'RefObject<ActionSheet>' is not assignable to type '(instance: ActionSheet | null) => void'.
      Type 'RefObject<ActionSheet>' provides no match for the signature '(instance: ActionSheet | null): void'.

知道怎么解决吗?

【问题讨论】:

而不是createRef,当您使用useRef 时会发生什么? 嗯,我根本无法重现这个。您的代码示例有效(在整理了不相关的错误之后)为我通过了类型检查。 【参考方案1】:

软件包开发人员已发布修复此问题的更新 (see GitHub issue)。您可以使用此代码:

const actionSheetRef = useRef<ActionSheet>(null)
<ActionSheet
            ref=actionSheetRef
            onClose=props.handleClose
        >
   ...
</ActionSheet>

【讨论】:

以上是关于React createRef 不可分配给 React Native Actions Sheet ref prop 中的 MutableRefObject 类型的主要内容,如果未能解决你的问题,请参考以下文章

不可分配给类型 IntrinsicAttributes & IntrinsicClassAttributes React.js

react-router-dom TypeScript TS2322:类型'typeof Index'不可分配给类型

React 中ref的 React.createRef() 方法

类型“字符串”不可分配给类型“WebkitAppearance |在 React + TypeScript 中未定义?

React-Table:不可分配给类型 Partial<TableState<object>>

Typescript React/Redux:“typeof MyClass”类型的参数不可分配给“ComponentType<...”类型的参数