如何更新反冲状态对象的特定值

2024-02-10

我有这个反冲状态对象:

export const LivePolygon = atom({
    key: "LivePolygon",
    default: {
        radii: ['', ''],
        coordinates: ['', ''],
        tilt: ['']
      },
});

在另一个文件上,我像这样导入它:

import { LivePolygon } from "../TheFileOfLivePolygon";

const [liveP, setLiveP] = useRecoilState(LivePolygon);

现在我想更新它的特定值(从导入它的另一个文件)。

例如,如果我想更新对象radii在第二个单元格中等于 5。

使用一个简单的变量我会这样做:

liveP.radii[1] = 5

我在这里可以怎样做呢? 我看到了一些相关问题,但没有一个对这个案子有帮助。


下面是一个带注释的示例,说明如何更新 Recoil 原子中的对象值。只需确保在更新时不要改变任何对象(对于任何 React 状态也是如此)。

body { font-family: sans-serif; }
button, pre { font-size: 1rem; }
pre { font-family: monospace; }
<div id="root"></div><script src="https://unpkg.com/[email protected] /cdn-cgi/l/email-protection/umd/react.development.js"></script><script src="https://unpkg.com/[email protected] /cdn-cgi/l/email-protection/umd/react-dom.development.js"></script><script src="https://unpkg.com/[email protected] /cdn-cgi/l/email-protection/umd/recoil.min.js"></script><script src="https://unpkg.com/@babel/[email protected] /cdn-cgi/l/email-protection/babel.min.js"></script>
<script type="text/babel" data-type="module" data-presets="env,react">

// import * as ReactDOM from 'react-dom/client';
// import {atom, RecoilRoot, useRecoilState} from 'recoil';

// This Stack Overflow snippet demo uses UMD modules instead of the above import statments
const {atom, RecoilRoot, useRecoilState} = Recoil;

// It won't make any difference whether you define this atom
// here in this module or define it in another module and import it:
const livePolyAtom = atom({
  key: 'livePolygon',
  default: {
    radii: [0, 0],
    coordinates: [0, 0],
    tilt: [0],
  },
});

function App () {
  const [livePoly, setLivePoly] = useRecoilState(livePolyAtom);

  const updateRadiiValue = () => {
    // Make sure not to mutate any objects when returning the new object state:
    setLivePoly(lp => {
      const radii = [...lp.radii];
      radii[1] = 5;
      return {...lp, radii};
    });
  };

  return (
    <div>
      <button onClick={updateRadiiValue}>Update radii value</button>
      <pre><code>{JSON.stringify(livePoly, null, 2)}</code></pre>
    </div>
  );
}

const reactRoot = ReactDOM.createRoot(document.getElementById('root'));

reactRoot.render(
  <RecoilRoot>
    <App />
  </RecoilRoot>
);

</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更新反冲状态对象的特定值 的相关文章

随机推荐

  • YouTube API v3,如何获取视频资源的文件详细信息(文件名等)?

    在 YouTube API v3 中 我试图获取我自己频道上各种视频的文件详细信息 文件名等 这个链接https developers google com youtube v3 docs videos https developers g
  • Git 支持“复制到”标签吗?

    我认为这个问题需要一些背景知识 因为在 git 中可能有更好的方法来做到这一点 我有一个构建服务器 可以为我们的主要开发分支进行持续集成 这非常有效 并且显然总是在寻找变化并构建特定的分支 我还有一个 QA 版本 我们希望按需构建和部署 过
  • 如何增加报表样式中列表视图的行高?

    我需要将 2px 添加到列表视图中的行高度 自定义绘制的进度条现在太窄了 有两个很好的答案更改列表视图项目高度 https stackoverflow com questions 5569779 change listview item h
  • 如何以编程方式访问iOS系统字体

    我正在尝试更改导航栏标题的字体大小 我知道我可以使用以下方法设置其属性 var attributes NSForegroundColorAttributeName UIColor blackColor NSFontAttributeName
  • Solr 4.0 是否能够对多核使用“join”?

    我注意到 Solr 4 0 为具有关系的文档引入了 连接 功能 这很棒 但是 我注意到给出的例子http wiki apache org solr Join http wiki apache org solr Join适用于单核 所有文档都
  • 从多模块 pom 构建单个模块

    可以做吗 环境 多模块pom由3个模块组成 mm1 mm2 mm3 模块 mm2 有 mm1 作为依赖项 可以没有任何错误地构建父 pom 问题 是否可以在不将 mm1 安装到本地存储库的情况下构建单个模块 mm2 即从 mm2 基本目录运
  • 切换到 Android 应用程序包分发后,应用程序有时会崩溃并出现 Resources$NotFoundException

    App每月活跃用户超过20000人 它已经在 Google Play 上发布几个月了 在我最近从 apk 发行版切换到 aab 发行版后 我开始在 crashlytics 和 google play store 上收到随机崩溃的消息 在导致
  • 更少的变量:这可能吗

    所以我的代码在类型方面存在重大问题 但我似乎无法解决它 每当我减去1从线8有问题 我该如何解决这个问题 max columns 2 column 1 width min 30 column 2 width min 40 loop colum
  • .NET DB2 OLEDB 先决条件

    我用 C NET Framework 2 0 编写了一个 Windows 窗体应用程序 它使用System Data OleDb与 SQL Server 2000 数据库对话 该数据库运行良好 我现在需要增强应用程序以与DB2 http e
  • 使用聚合将多个函数应用于数据框中的每一列

    当我需要将多个函数按顺序应用于多个列并按多个列聚合并希望将结果绑定到我通常使用的数据框中时aggregate 通过以下方式 bogus functions foo1 lt function x mean x var x foo2 lt fu
  • npm start 如何指定index.js以外的启动文件

    我运行 create react app 然后切换到目录并运行 npm start 只是想知道如何指定一个与 index js 不同的文件在服务器上启动 这是我的 package json 文件 name todo version 0 1
  • 错误:联合中不允许复制赋值运算符

    当出现以下错误时 我正在编译下面的代码 我找不到原因 typedef union struct const int j tag X int main return 0 error member lt anonymous union gt l
  • Django 模板内部总结

    我在 django 中有以下模板 我想获取每个文档对象的最后 2 列的总计 for documento in documentos for cuenta in documento cuentasxdocumento set all tr i
  • 通过蓝牙将文件从 PC 传输到其他设备代码示例 C++ [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 Stackoverflow 用户大家好 问题 我正在寻找一些代码示例 这些示例展示了如何找到连接到我的计算机的蓝牙设备 我正在寻找一些
  • 是否有可用的 WPF“WrapGrid”控件或创建控件的简单方法?

    本质上我想要一个wrapPanel 但我希望项目能够捕捉到网格而不是被压到左侧 这样我就可以获得一个漂亮的统一外观的网格 它会自动消耗可用空间 WrapPanel 处理调整大小部分 WPF Contrib AutoGrid 处理一个很好的自
  • Android XML 属性中的星号 (*) [重复]

    这个问题在这里已经有答案了 谁能解释一下 Android XML 属性中星号的含义 允许您访问私有资源 私有资源之所以私有是有原因的 因为它们的名称将来可能会作为固件或皮肤更新的一部分而
  • 在php中对对象数组进行排序

    嗨 我想对一个对象数组进行排序 它采用数组的形式 其中包含对象 每个对象都有键 值 我想根据值对对象进行排序 问题是值包含其中有空格的数字之间 有些也是空数字 所以我无法使用 usort 对其进行排序 任何帮助将不胜感激 这是一个代码片段
  • 浏览器文本框自动完成事件,什么时候发生?

    If i dont put autocomplete off on my
  • 使用 fread 将文件内容读取到结构中

    在 Unix 环境中的高级编程 一书中 有一部分 第 8 14 章 第 251 页 作者向我们展示了 acct 结构 用于存储会计记录信息 的定义 然后 他展示了一个程序 在该程序中 他将文件中的会计数据读取到结构中 其关键部分是 frea
  • 如何更新反冲状态对象的特定值

    我有这个反冲状态对象 export const LivePolygon atom key LivePolygon default radii coordinates tilt 在另一个文件上 我像这样导入它 import LivePolyg