参考电流仅在类组件中就绪

Ref current is ready only in class component

提问人:Saad Farooq 提问时间:6/22/2023 更新时间:6/22/2023 访问量:218

问:

我正在使用使用 createRef 创建的 ref 将字符串值存储在类组件中。但是,每当我尝试更改电流的值时,我都会收到错误,即电流仅准备就绪。我正在使用打字稿:

class MyClassComponent extends React.Component {
  myRef = React.createRef<string>();

  someFunction = () => {
    this.myRef.current = 'value'; //error here: current is ready only.
  };
}
reactjs 基于反应类的组件 创建参考

评论

1赞 Emanuele Scarabattoli 6/22/2023
这回答了你的问题吗?如何在类组件中使用 React.useRef()?
0赞 Flo 6/22/2023
您可能还想看看 stackoverflow.com/questions/65329431/...

答:

0赞 Lin Du 6/22/2023 #1

反应 18.2.0@types/反应 18.2.13

React.createRef()返回属性为只读的类型。我们可以声明 的类型。RefObject.currentReact.MutableRefObjectmyRef

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>
}