React 组件不会在更新状态时重新渲染

2024-01-04

我认为你知道更好的解决方案: 我有一个包含我的猫的对象数组的文件:

var categories = [
  {
    "id": 1,
    "name" : "Faktury",
    "selected" : false
  },
  {
    "id": 2,
    "name" : "Telefony",
    "selected" : false
  },
  {
    "id": 3,
    "name" : "Komputery",
    "selected" : false
  },
  {
    "id": 4,
    "name" : "Rachunkowośc",
    "selected" : false
  },
  {
    "id": 5,
    "name" : "Finanse",
    "selected" : false
  }
];

我有:

<ul className="category">
  {this.state.categories.map((item,index) =>
    <li onClick={()=>this.filterCategory(item,index)} key={item.id} className={item.selected? 'active' : ''}>{item.name}</li>
  )}
</ul>

和我的过滤器类别:

filterCategory(item,index) {
  this.state.categories[index].selected = !this.state.categories[index].selected;
  this.forceUpdate();
}

你知道我怎样才能做到不forceUpdate()?我已经读过堆栈我应该避免使用this.forceUpdate()


Using setState自动触发重新渲染,因此不要直接改变状态使用setState更新状态。

filterCategory(item,index){
   var categories = [...this.state.categories];
   categories[index].selected = !categories[index].selected;
   this.setState({categories})
}

根据文档:

永远不要直接改变 this.state,因为之后调用 setState() 可能会 替换你所做的突变。将 this.state 视为 不可变的。

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

React 组件不会在更新状态时重新渲染 的相关文章

随机推荐

  • 警告:返回类型默认为“int”[-Wreturn-type]

    我是一名开始学习 C 的 Linux 用户 我正在尝试编译我输入的这个源代码 include
  • 覆盖 Liferay 启动事件

    我有一个关于 Liferay 启动事件的问题 Liferay 文档中给出 启动活动 输入扩展的逗号分隔类名列表com liferay portal struts SimpleAction 这些类将在指定事件中运行 有人可以告诉我两者之间有什
  • 数组越界,参数问题

    所以当我编译时 一切都会编译得很好 当我去运行该程序时 我收到此错误 线程 main 中的异常 java lang ArrayIndexOutOfBoundsException 0 在 ClientForNoDupCollection ma
  • 如何使用动态列取消透视 Oracle

    我需要取消透视一个我无法控制列的表 所以我需要动态获取列名称 这就是我所拥有的 CREATE TABLE test PK VARCHAR2 255 CHAR COL1 VARCHAR2 255 CHAR COL2 VARCHAR2 255
  • 使用迁移 API 时 Knex 迁移不起作用

    我是 knex 迁移的新手 在过去的 2 天里我一直在努力让它工作 但没有任何反应 我正在尝试使用以下命令以编程方式运行我的迁移knex migration object 首先使用 cli 我在迁移目录中创建一个迁移文件 这是它的内容 ex
  • 字节数组到 8 位真彩色图像

    我正在尝试从旧电脑游戏中提取一些精灵 我找到了精灵并将它们撕成灰度的单独文件 现在我正在尝试研究如何给它们上色 可执行文件或其数据文件中似乎没有任何调色板数据 再加上游戏所需的颜色深度 256 色 使我相信每个字节实际上是一个 8 位真彩色
  • std::stack 在不同容器上的实现有什么实际区别?

    当实施一个std stack 有几个选项 例如 stack with default underlying deque std stack lt int gt intDequeStack stack with underlying vect
  • 将多个内容 CSS 文件添加到 CKEditor

    如何使用 CKEditor 使用 1 个以上的 css 文件作为内容 CSS 我已经在配置中添加了 bootstrap css config contentsCss css bootstrap min css 我们的设计师创建了第二个 cs
  • 向进程组的所有成员发送信号的最佳方式是什么?

    我想杀死整个进程树 使用常见脚本语言执行此操作的最佳方法是什么 我正在寻找一个简单的解决方案 您没有说明要杀死的树是否是单个进程组 如果树是从服务器启动或 shell 命令行分叉的结果 通常会出现这种情况 您可以使用 GNU ps 发现进程
  • REG 删除批处理文件中包含引号的值?

    我正在尝试删除我制作的批处理文件中的一些注册表项 我在这里找到了以下代码 它运行良好 直到它击中 REG DELETE for F tokens 1 a in REG QUERY KEY findstr I C VALUE do REG D
  • 寻址 python 对象

    我正在尝试将 ncclient 用于 Python 如果我这样做 它会起作用 from ncclient import manager m manager connect 如果我这样做就会失败 import ncclient m nccli
  • Susy:带有固定排水沟的流体柱?

    我正在尝试构建一个包含流体柱和固定排水沟的 12 列网格 列的宽度会随着窗口大小的调整而改变 但装订线将保持不变 基本上 百分比代表列 em 代表装订线 这对苏西来说可能吗 您可以使用填充作为排水沟 并允许您拥有固定的 间距 同时保持网格的
  • 类路径和构建路径有什么区别

    我对这两个术语感到困惑 另外 我应该如何在 Spring MVC 项目的 src 文件夹下创建文件 当我使用 File 对象创建时 它会在 C SpringSourceTool 中创建文件 我猜这是 ClassPath 对吗 我怎样才能得到
  • 在网站上显示 RTSP

    我有一个指向摄像机的 RTSP 链接 我想将其显示在网页上 由于视频标签不支持 RTSP 并且 google chrome 不再支持 VLC 和 QuickTime 插件 目前使用 RTSP 链接显示此摄像机的最佳方式是什么 如果延迟不是一
  • 该属性应该是我的对象接口的一部分吗?

    我有一个名为 IsSecureConnection 的属性 它是我的对象接口的一部分 这对于接口的大多数实现都是有意义的 但是 在某些实现中 我希望将属性设置为只读 即使所有实现都需要此属性 尽管有时略有不同 我是否应该从对象的接口中省略此
  • 在 cron 中运行 headless selenium 时,出现错误“Pyperclip 无法找到适合您系统的复制/粘贴机制”

    我用Python实现了一个selenium脚本来上传一些图片和内容到Facebook 我将其命名为FBUpload py 当我以这种方式启动它时 它工作得很好 在无头模式下 Xvfb 10 ac python3 home someuser
  • PHPWord:创建从右到左的阿拉伯语 Word 文档

    我正在尝试使用PHPWord http phpword codeplex com 创建一个 Word 文档 其中包含从 MySQL 数据库中提取的动态数据 数据库有 MySQL 字符集 UTF 8 Unicode utf8 MySQL 连接
  • SQL查询按月比较产品销量

    我有一个每月状态数据库视图 我需要根据该视图构建报告 视图中的数据看起来像这样 Category Revenue Yearh Month Bikes 10 000 2008 1 Bikes 12 000 2008 2 Bikes 12 00
  • 在 Nest ElasticSearch 中重复使用计数和搜索查询

    有没有办法通过 Nest 在 ElasticSearch 中重用对 Client Search 和 Client Count 的流畅查询 这是定义搜索流畅定义的代码片段的开头 System Func
  • React 组件不会在更新状态时重新渲染

    我认为你知道更好的解决方案 我有一个包含我的猫的对象数组的文件 var categories id 1 name Faktury selected false id 2 name Telefony selected false id 3 n