Javascript React native ref属性';参考';不存在于类型';内在的颂词;
我得到以下错误,但我无法找出如何修复它有人可以帮我解决 下面是关于世博会的完整代码链接Javascript React native ref属性';参考';不存在于类型';内在的颂词;,javascript,typescript,react-native,ref,react-ref,Javascript,Typescript,React Native,Ref,React Ref,我得到以下错误,但我无法找出如何修复它有人可以帮我解决 下面是关于世博会的完整代码链接 例如: 键入“{ref:(ref:any)=>any;数据:{key:string;title:string; text:string;backgroundColor:string;}[];renderItem:({item}: any)=>元素;renderPagination:(activeIndex:number)=>元素; scrollX:(scrollXList:any)=>any;}'不可分配
例如:
键入“{ref:(ref:any)=>any;数据:{key:string;title:string;
text:string;backgroundColor:string;}[];renderItem:({item}:
any)=>元素;renderPagination:(activeIndex:number)=>元素;
scrollX:(scrollXList:any)=>any;}'不可分配给类型
'内部属性&{data:any[];renderItem:(信息:
ListRenderItemInfo&{dimensions:{宽度:编号;高度:
编号;};})=>ReactNode;renderSkipButton?:(()=>ReactNode)|
未定义;…19更多…;scrollX:((a:any)=>void)|未定义;
}&FlatListProps&{…;}。上不存在属性“ref”
键入“intrinsicationattributes&{data:any[];renderItem:(信息:
ListRenderItemInfo&{dimensions:{宽度:编号;高度:
编号;};})=>ReactNode;renderSkipButton?:(()=>ReactNode)|
未定义;…19更多…;scrollX:((a:any)=>void)|未定义;
}&FlatListProps&{…;}
链接:
常量滑块=useRef(null);
...
(slider.current=ref)}
...
type itemtrops={
数据:ItemT[];
renderItem:(
信息:ListRenderItemInfo&{
尺寸:{宽度:编号;高度:编号};
}
)=>React.ReactNode;
renderSkipButton?:()=>React.ReactNode;
RenderNext按钮?:()=>React.ReactNode;
renderDoneButton?:()=>React.ReactNode;
renderPrevButton?:()=>React.ReactNode;
onSlideChange?:(a:编号,b:编号)=>无效;
onSkip?:()=>无效;
onDone?:()=>无效;
renderPagination?:(activeIndex:number)=>React.ReactNode;
activeDotStyle:ViewStyle;
dotStyle:ViewStyle;
dotClickEnabled:布尔值;
斯基普拉贝尔:弦;
doneLabel:字符串;
nextLabel:字符串;
标签:字符串;
showDoneButton:布尔值;
showNextButton:布尔值;
showPrevButton:布尔值;
showSkipButton:布尔值;
底部按钮:布尔;
scrollX?:(a:任意)=>无效;
}&FlatListProps;
常量AppIntroSlider:FunctionComponent=({
数据,
renderItem,
renderSkipButton,
RenderNext按钮,
RenderOne按钮,
renderPrevButton,
一旦发生变化,
昂斯基普,
昂丹,
渲染渲染,
activeDotStyle={
背景颜色:“rgba(255,255,255,.9)”,
},
点样式={
背景色:“rgba(0,0,0,2)”,
},
dotClickEnabled=true,
skipLabel='Skip',
doneLabel='Done',
nextLabel='Next',
prevLabel='返回',
showDoneButton=true,
showNextButton=true,
showPrevButton=false,
showSkipButton=false,
bottomButton=false,
额外数据,
scrollX,
…其他道具
}:any)=>{
当您登录slider时。currentref显示null,因为您的AppIntroSlider组件是一个功能组件,不支持这种方式。您有两种解决方案,将AppIntroSlide更改为类组件,它将正常工作,或者使用forwardRef> 当您记录slider.currentref时,它会显示null,因为您的AppIntroSlider组件是一个功能组件,不支持这种方式。您有两种解决方案,将AppIntroSlide更改为类组件,它会正常工作,或者使用forwardRefI看一看您发布的带有useImperialiveHandle
的示例,您的用法基本正确。您的用法与前面的用法略有不同,因为您的函数goToSlide
带有参数
为引用的组件定义接口
时,需要使用适当的参数类型定义goToSlide
函数。您当前将其定义为不带参数的函数(goToSlide():void
),这就是为什么会出现错误“Type”(pageNum:number,triggerOnSlideChange?:布尔值|未定义)=>void'不可分配给带有UseImperializeHandle
的行上的类型“()=>void.”
export interface MyRef {
goToSlide(pageNum: number, triggerOnSlideChange?: boolean): void;
}
MyCustomComponentProps
上的一组道具应该定义为可选的。您已经为它们设置了默认值
在修复了这两个问题之后,除了可选链接引起的错误之外,所有错误都会消失。
。这是一个新的ish功能,我不知道如何让Expo理解它
从技术上讲,您不需要在sliderRef
之后使用?。
,因为ref对象总是被定义的。它是当前的属性,可能是null
,所以您确实需要?。
在当前的之后使用。但是如果红色下划线困扰您,您也可以用老式的方法检查它:
const prev = (activeIndex: number): void => {
if ( sliderRef.current ) {
sliderRef.current.goToSlide(activeIndex - 1, true);
}
};
我看了一看你用UseImperialiveHandle
发布的示例,你基本上是对的。你的用法与前面的有点不同,因为你的函数goToSlide
带有参数
为引用的组件定义接口
时,需要使用适当的参数类型定义goToSlide
函数。您当前将其定义为不带参数的函数(goToSlide():void
),这就是为什么会出现错误“Type”(pageNum:number,triggerOnSlideChange?:布尔值|未定义)=>void'不可分配给带有UseImperializeHandle
的行上的类型“()=>void.”
export interface MyRef {
goToSlide(pageNum: number, triggerOnSlideChange?: boolean): void;
}
MyCustomComponentProps
上的一组道具应该定义为可选的。您已经为它们设置了默认值
在修复了这两个问题之后,除了可选链接引起的错误之外,所有错误都会消失。
。这是一个新的ish功能,我不知道如何让Expo理解它
你不知道