【问题标题】:Storing class instances in recoil将类实例存储在反冲中
【发布时间】:2021-01-01 16:18:42
【问题描述】:

我们正在尝试将类实例存储为原子状态值。当我们获得想要复制的状态值时,然后通过调用其上的方法来改变对象。代码如下所示:

  const [config, setConfig] = useRecoilState<ConfigClass>(configAtom);

  const updateConfig = () => {
    const updatedConfig = _.cloneDeep(config);
    updatedConfig.setProperty1('A');
    updatedConfig.setProperty2('B');

    setConfig(updatedConfig);
  }

  ...

这里的问题是这样做会导致 TypeScript 错误,例如

TypeError: attempted to get private field on non-instance

似乎从useRecoilState 收到的配置值不是该类的普通实例。我该如何解决这个问题?

【问题讨论】:

    标签: recoiljs


    【解决方案1】:

    您不能以反冲状态存储函数/实例,所有反冲状态都应该是对象表示法(没有函数)、布​​尔、数字、字符串等类型,基本上是任何可序列化或能够转换为 JSON 的数据类型。

    【讨论】:

    • 这是否记录在任何地方?我一直无法找到允许的良好规​​则。
    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2021-07-28
    • 2011-05-22
    • 1970-01-01
    • 2022-01-13
    • 2023-03-22
    • 2017-04-04
    • 1970-01-01
    相关资源
    最近更新 更多