提问人:Saad Farooq 提问时间:6/22/2023 更新时间:6/22/2023 访问量:218
参考电流仅在类组件中就绪
Ref current is ready only in class component
问:
我正在使用使用 createRef 创建的 ref 将字符串值存储在类组件中。但是,每当我尝试更改电流的值时,我都会收到错误,即电流仅准备就绪。我正在使用打字稿:
class MyClassComponent extends React.Component {
myRef = React.createRef<string>();
someFunction = () => {
this.myRef.current = 'value'; //error here: current is ready only.
};
}
答:
0赞
Lin Du
6/22/2023
#1
反应 18.2.0、@types/反应 18.2.13
React.createRef()
返回属性为只读的类型。我们可以声明 的类型。RefObject
.current
React.MutableRefObject
myRef
current
:最初,它设置为 。null
所以最终的类型是 .React.MutableRefObject<string | null>
interface MutableRefObject<T> {
current: T;
}
interface RefObject<T> {
readonly current: T | null;
}
class MyClassComponent extends React.Component {
myRef: React.MutableRefObject<string | null> = React.createRef();
someFunction() {
this.myRef.current = 'value';
}
}
另外,看看这个问题
评论
0赞
Flo
6/22/2023
不过,这将给出以下错误:TS2322: Type 'RefObject<string>' is not assignable to type 'MutableRefObject<string>'.
0赞
Flo
6/22/2023
#2
createRef
会给你一个 RefObject 作为属性传递,这个字段的当前字段是只读的。ref
如果需要可变引用(通常用作可以在不触发重新渲染的情况下更改的状态),请考虑切换到功能组件并使用 .useRef
const MyComponent = () => {
const myRef = React.useRef<string>()
const someFunction = () => {
myRef.current = 'value'; // works, will NOT trigger re-rendering of the component
}
return <p> Some Content here... </p>
}
评论