代码之家  ›  专栏  ›  技术社区  ›  Evan Trimboli

初始化时仅限useRef readonly值

  •  0
  • Evan Trimboli  · 技术社区  · 5 年前

    转向功能组件, useRef 似乎是镜像类级别变量的方式。考虑:

    class Component extends React.Component<Props> {
        private readonly foo: Something<Props>
    
        constructor(props: Props) {
          super(props)
          this.foo = new Something<Props>(props)
        }
    }
    

    在这种情况下,不能重新分配foo的值。

    const Component : React.FunctionComponent<Props> = (props: Props) => {
        const foo = useRef(new Something<Props>(props));
        return null;
    };
    

    在这种情况下,, foo.current 是可变的,因为 返回一个 MutableRefObject . 而且每次它都会初始化,我不想这样。是否有某种内在的东西使这些是不可变的?

    0 回复  |  直到 5 年前
        1
  •  2
  •   Patrick Roberts Benjamin Gruenbaum    5 年前

    Hooks常见问题解答包含一个关于 How to create expensive objects lazily . 您可以使用 callback signature of useState() :

    const Component : React.FunctionComponent<Props> = (props: Props) => {
        const [foo] = React.useState(() => new Something<Props>(props) as const);
        return null;
    };