如何避免“类型“never”上不存在属性“childfocusfn”。ts(2339)”错误
在react中使用forwardref和useimperativehandle创建可定制组件时,可能会遇到 “类型“never”上不存在属性“childfocusfn”。ts(2339)”错误。
原因:
默认情况下,useimperativehandle的第二个参数(ref)类型为never。这意味着在 ref.current 上访问属性时,编译器无法确认其类型。
要避免此错误,需明确指定 useimperativehandle的第二个参数类型。例如,对于focus()方法,可以将类型指定为() => void:
const ref = useref void }>(null);
登录后复制
修改后的完整代码示例:
import { forwardRef, useState, LegacyRef, useRef, Ref, createRef, useImperativeHandle } from 'react'import './App.css'// 子组件const ChildComp = forwardRef((props, ref) => { const childRef = createRef() useImperativeHandle(ref, () => ({ childFocusFn: () => { childRef.current?.focus() console.log("childFocusFn called.") } })) return void }>(null); const clickFn = () => { if(ref.current) { ref.current.childFocusFn() } } return ( 登录后复制以上就是React中forwardRef和useImperativeHandle导致“类型“never”上不存在属性“childFocusFn”错误如何解决?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2649966.html