根据Reaction的文档,useRef()
表示当您需要不影响呈现的数据时,为了将引用传递给子组件,您必须对子组件使用forwardRef
包装器.
我正在使用Reaction和TypeScrip,在try 将引用传递给我的子组件时遇到了一个问题.我遇到的问题是,子组件中的ref类型是((instance: T | null) => void) | MutableRefObject<T | null> | null;
,这并没有提供如何提取ref的值的清晰方法.
示例:
function ParentComponent() {
const someData = useRef(1);
// some event handling who may change the value of someData
return (
<ChildComponent ref={someData} />
);
}
const ChildComponent = forwardRef<number>(function ChildComponent(props, ref) {
function onClick() {
// use ref here, need the number from ref but get type error
}
return <button onclick={onClick} type="button"></button>;
}
虽然我理解ref的主要用例是处理用于操作的DOM引用,但ref的核心目的是包含在更改时不应影响呈现的数据.
有没有其他方法来传递数据而不影响呈现到子组件,这是不应该做的事情,或者我只需要将其强制转换为MutableRefObject<T | null> | null
并到此为止?我担心类型上的函数签名,如果我需要做任何事情的话.我在搜索过程中找到的所有内容都只涉及在两者之间传递DOM引用,而不是实际的数据.