首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

图标className不会在状态更改时更新

是因为className是一个静态属性,它不会随着组件状态的改变而自动更新。在React中,组件的状态变化会触发组件的重新渲染,但是className并不会自动更新。

要解决这个问题,可以通过以下几种方式:

  1. 使用条件渲染:根据组件的状态,在render方法中动态设置className。例如:
代码语言:txt
复制
render() {
  const iconClassName = this.state.isActive ? 'active-icon' : 'inactive-icon';
  return <i className={iconClassName}></i>;
}
  1. 使用动态类名库:可以使用第三方库来处理动态类名的更新,例如classnames库。这个库可以根据条件动态生成类名字符串。例如:
代码语言:txt
复制
import classNames from 'classnames';

render() {
  const iconClassName = classNames({
    'active-icon': this.state.isActive,
    'inactive-icon': !this.state.isActive
  });
  return <i className={iconClassName}></i>;
}
  1. 使用CSS-in-JS:使用CSS-in-JS的解决方案,如styled-components或Emotion,可以直接在组件中定义样式,并根据状态变化来更新样式。例如:
代码语言:txt
复制
import styled from 'styled-components';

const Icon = styled.i`
  &.active-icon {
    // active样式
  }

  &.inactive-icon {
    // inactive样式
  }
`;

render() {
  return <Icon className={this.state.isActive ? 'active-icon' : 'inactive-icon'} />;
}

以上是解决图标className不会在状态更改时更新的几种常见方法。根据具体的项目需求和技术栈选择合适的方式来处理。对于React开发,可以考虑使用条件渲染、动态类名库或CSS-in-JS来解决这个问题。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,无法给出具体的链接地址。但腾讯云提供了丰富的云计算服务,可以通过腾讯云官方网站或者搜索引擎来获取相关产品和文档信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

UI自动化 --- UI Automation 基础详解

对UI逻辑结构有贡献但本身不可交互的UI项例如有列表视图的标题、工具栏、菜单和状态栏。 仅用于布局或装饰目的的非交互项不会在控件视图中显示。...例如 Windows 资源管理器中的大图标视图或 Microsoft Word 中的不带标头的简单表格。...详细内容请阅读微软官方文档。 事件 说明 属性更改 当 UI 自动化元素上的某个属性或控件模式更改时引发。...元素操作 当来自最终用户或编程活动的 UI 结果出现更改时引发;例如,单击或通过 InvokePattern 调用一个按钮。 结构更改 在 UI 自动化树的结构更改时引发。...结尾 文中只列举了部分内容,详细内容请阅读微软官方文档,文档还是很详细的,比较难受的地方就是示例代码太少,可能需要自己发掘了。

1.5K20

Flutter 中 stateless 和 stateful widget 的区别

小部件的状态 状态是在构建期间同步读取小部件类的信息 - 也就是说,当小部件显示在屏幕上并且如果信息在其生命周期内发生更改时可能会发生变化。...当我们描述的 UI 部分不依赖于任何其他小部件时,无状态小部件会很有用。无状态小部件的示例是文本、图标图标按钮和凸起按钮。...当我们创建不需要一次又一次重绘小部件的应用程序时,我们使用无状态小部件。例如,当我们创建一个AppBar](,无状态小部件可以是不需要更改的脚手架或图标。 无状态小部件类仅在初始化时调用一次。...但是如果我们希望它在有动作时更新,我们必须制作一个有状态的小部件。 有状态的小部件 当 UI 的某些部分必须在运行时动态更改时,使用有状态小部件。有状态的小部件可以在应用程序运行时多次重绘自己。...它将被渲染一次并且不会自行更新setState() 有一个内部并且可以在输入数据更改时重新渲染setState() 静态小部件 动态小部件 除非发生外部事件,否则无法在运行时更新 可以在运行时根据用户操作或数据更改进行更新

2.2K10

《精通reactvue组件设计》之5分钟实现一个Tag(标签)组件和Empty(空状态)组件

今天主要带大家一起实现一个Tag组件和Empty(空状态)组件,在介绍组件设计之前,先给大家介绍一个免费开源的图标库icomoon, ?...由图可以知道tag组件可以自定义颜色主题(color theme), 可以手动关闭标签, 空状态主要是提供用户数据展示用的, 实现起来很简单,重点在图标的使用上. 1....基于react实现一个Tag组件 2.1. tag组件框架设计 首先我们先根据需求将组件框架写好,这样后面写业务逻辑会清晰: import React from 'react' import classnames.../index.less' /** * 空状态组件 * @param {className} string 自定义类名 * @param {text} string 空状态文本 */ export...可编辑图标,生成svg图标或者字体图标 ? 当然国内的iconfont也非常优秀,大家可以多尝试.

1.4K20

Python应用开发——30天学习Streamlit Python包进行APP的构建(4)

如果图标为 "无"(默认),则不显示图标。如果图标是字符串,则以下选项有效: 单字符表情符号。例如,可以设置 icon="" 或 icon=""。不支持表情符号简码。...材料符号库(轮廓样式)中的图标,格式为":material/icon_name:",其中 "icon_name "是蛇形图标的名称。...例如,icon=":material/thumb_up: "将显示拇指向上图标。在 Material Symbols 字体库中查找其他图标。...初始化代码编辑器和图表的默认数据 # # 在这篇教程中,我们会用到 Nivo Bump 图的数据 # 你能在“data”标签页下获取随机的数据:https://nivo.rocks/bump/ # # 如下所示,当代码编辑器发生更改时...,会话状态就会被更新 # 然后会被读入至 Nivo Bump 图并将其绘制出来 if "data" not in st.session_state: st.session_state.data

19710

用思维模型去理解 React

在这种情况下,信息将采用函数的形式更新父级状态。...当状态被更改时,其组件将渲染并因此重新执行其中的所有代码。我们这样做是为了向用户显示最新被更新的信息。 在我的思维模型中,状态就像盒子内部的特殊属性。它独立于其中发生的一切。...在每次 porp 更改时,React 必须重新渲染的原因是它希望使用户了解最新的信息。 但是,重新渲染后状态不会改变,它们的值得以维持。这就是为什么盒子是“回收重利用的”而不是每次都创建全新的。...在内部 React 会跟踪每个盒子并确保其状态始终保持一致。这就是 React 怎样知道何时去更新组件的方式。 ?...prop 或 state 被更改时,React 组件的模型会重新渲染 请记住,state 或 prop 的更改意味着用户看到的信息已过时,React 会始终希望保持 UI 更新,以便它能够重新渲染必须显示新数据的组件

2.4K20

开篇:通过 state 阐述 React 渲染

组件(或者其祖先之一)的 状态发生了改变。 State setter 函数更新变量(状态发生改变)并触发 React 再次渲染组件。...组件(或者其祖先之一)状态发生了改变。 渲染组件 在进行初次渲染时, React 会调用根组件。 对于后续的渲染, React 会调用内部状态更新触发了渲染的函数组件。...一个 state 变量的值永远不会在一次渲染的内部发生变化, 即使其事件处理函数的代码是异步的。它的值在 React 通过调用组件“获取 UI 的快照”时就被“固定”了。...下述例子,容易说明上述「快照」的含义。点击一次按钮,alert 弹出 0 而不是 5。.../button> 结合上述问题,下述提供一些方案 >>> 给 useEeffect 添加响应依赖 性能较差,每次setInterval都会被销毁&重建(导致 Effect 在每次 count 更改时再次执行

4800

精读《React — 5 Things That Might Surprise You》

A. 2 B. 1 ✔️ 点击demo 原因是在我们的状态更新期间,我们使用了之前的状态值:setCounter(count + 1)。...最重要的是,setState 的连续执行可能会导致 React 的调度算法使用相同的事件处理程序处理多个非常快速的状态更新。...setCounter((prevCounter) => prevCounter + 1); ❝注意:「每当你的状态更新依赖于之前的状态时,请务必使用functional updates!」...但是 refs 也可以用于不同的目的——我们可以使用类组件非常容易·实现这一点,但我们不能使用函数式组件——保留一个不会在每次渲染时重新创建的静态变量。...频繁更新状态状态共享)的,推荐使用Redux等状态管理工具 import React, { useState, useContext } from "react"; import ".

1.2K20

「React 手册 」组件生命周期相关函数——componentWillMount

qXcjSfRj0C0ir2yMsYiRyw.jpeg 大家好,在前面的几篇文章中,我们已经初步学习了组件的使用方法,但是这些内容只是开始,关于组件的内容还是比较多,比如在组件生命周期内提供了处理数据的方法,在特定的应用场景更新我们的应用...Todo list 实例 1、首先我们来看看本示例完成后的效果,如下图所示,首先界面初始化一些历史任务信息,我们可以进行更新完成状态同时可以进行删除,输入框用于添加新任务 ?...}) } }; 11、markAsCompleted() 方法接收一个任务 ID 标识参数,这个方法用于标识任务已完成,其逻辑主要先查找到对应 ID 的任务,将其更新已完成...15、在我们调用 map 函数渲染列表时,别忘记 key 这个属性加入到列表元素上,否则浏览器控制台将会收到如下的警告: 16、你可能注意到,在我们的界面中,我们引入了一些 Font Awesome 图标...点击对应对号图标,标记对应的任务已完成 ? 点击垃圾箱图标,删除对应的任务 ?

51810

那些React-Native踩过的的坑

dom不同之处,如果不一样更新不同的地方,而如果item中的布局比较复杂的话,计算会比较耗时,但是如果封装到组件中如果更新时间只需要计算很简单的virtual...0x03 关于state的实用用法   在react-native中state代表动态改变值的状态,但如何应用到开发中是一个关键点?  ...具体例子:    0x01网络请求的不同状态:请求成功-无内容 请求成功-有数据 解析失败 接口错误     0x02播放器的详情页中点击播放按钮 进度条开始往前走 可以设置一个播放状态          ...然后若点击播放           1按钮改变按钮图标           2播放进度条开始往前走 0x03 关于react-native中ListView加载数据细节     页面中经常会有上拉加载数据的情况...,若使用 image.png     那时候弄的页面比直接使用 image.png 快2.5秒左右,尤其是页面item布局复杂的话效果明显。

1.9K90

「React 基础」组件生命周期函数 componentWillMount 简介

大家好,在前面的几篇文章中,我们已经初步学习了组件的使用方法,但是这些内容只是开始,关于组件的内容还是比较多,比如在组件生命周期内提供了处理数据的方法,在特定的应用场景更新我们的应用,这对我们开发十分重要...Todo list 实例 1、首先我们来看看本示例完成后的效果,如下图所示,首先界面初始化一些历史任务信息,我们可以进行更新完成状态同时可以进行删除,输入框用于添加新任务 2、接下来基于上篇文章的项目代码...}) } }; 11、markAsCompleted() 方法接收一个任务 ID 标识参数,这个方法用于标识任务已完成,其逻辑主要先查找到对应 ID 的任务,将其更新已完成...15、在我们调用 map 函数渲染列表时,别忘记 key 这个属性加入到列表元素上,否则浏览器控制台将会收到如下的警告: 16、你可能注意到,在我们的界面中,我们引入了一些 Font Awesome 图标...,我们需要在我们 index.html 文件引入图标的 CSS 文件,部分示例代码如下: React App <link href

3K20

127. 精读《React Conf 2019 - Day1》

experience) 技术人解决的问题总是围绕 DX 与 UX,而一般来说,优化了 DX 往往会带来 UX 的提升,这是因为一个解决开发者体验的技术创新往往也会带来用户体验的升级,至少也能让开发者有更好的心情、充足的时间做出好产品...更新组件 实现了 prepareUpdate 与 commitUpdate 才能完成组件更新。...图标体积优化 Facebook 团队通过优化,将图标大小从 4046.05KB 降低到了 132.95kb,体积减少了惊人的 96.7%,减少体积占总包体积的 19.6%!...之后定期从 React 官方文档项目拉取最新代码即可保持文档的同步更新。 你需要 redux 吗?...不要只使用一种数据流方案,根据状态的作用域确定方案比较好。 工程技术与科学不同,工程世界没有最好的方案,只有更好的方案。 就算有了完美方案也不要停止学习的步伐,总会有新知识产生。

1.7K20

Bartender 4 for Mac(应用图标管理工具)v4.2.11中英激活版

Bartender 4 for Mac将大量的菜单有选择折进Bartender的二级菜单,不仅会看起来整洁,使用起来也不会造成太大的麻烦。...当您想自动查看时,使用“显示更新”会显示男子栏图标。这些只是调酒师的一些出色功能,请在下面查看其他一些功能。隐藏的菜单栏图标通过单击调酒师图标或通过热键,可以随时显示隐藏的项目。...自动隐藏当您单击另一个应用程序时,调酒师可以自动再次隐藏菜单栏图标更新时在菜单栏中显示菜单栏图标设置菜单栏图标以在您希望查看时显示,例如Dropbox更新时显示,音量更改时显示。...然后在更新时显示一段时间。让您查看正在发生的事情,或采取重要措施。极简主义如果您想要真正的外观和隐私,还可以隐藏Bartender和Notification Center。...更新了适用于现代macOS的UI调酒师栏现在显示在菜单栏中,使其看起来像macOS的一部分。

61110

useEffect 实践案例(一)

当列表为空时,显示暂无数据 接口请求过程中,需要显示 Loading 状态 Loading 状态随便用的一个转圈图标来表示,和下面的图标有点重叠,以后有机会再调整一下 UI 接口请求成功之后,显示一个列表...再次搜索时,显示 Loading 状态 如果接口请求出错,显示错误页面 在实践中,这是针对一个请求所需要的常规状态处理,当然很多时候我们在学习的过程中简化了空数据/Loading/异常等状态,就导致了许多自学的朋友没有在工作中友好处理这些状态的习惯...Loading 状态是每个情况下都有可能发生的,与他们的关系是分别共存的 因此,当有错误信息时,这一块的内容应该为 if (error) { return ( {error} ) } 案例中出现的 Icon 组件是一个图标,该组件是我们这个项目自己封装好的基础组件 当是空列表时 if (list.length...OK,这样需求就完整的被解决,不过此时我们发现,useEffect 的逻辑与 onSure 的逻辑高度重合,他们一个代表初始化逻辑,一个代表更新逻辑。

14910

react组件性能优化探索实践

然而其组件渲染机制,也决定了在对组件进行更新时还可以进行细致的优化。 react组件渲染 react的组件渲染分为初始化渲染和更新渲染。...但是当我们要更新某个子组件的时候,如下图的绿色组件(从根组件传递下来应用在绿色组件上的数据发生改变): ? 我们的理想状态是只调用关键路径上组件的render,如下图: ?...为了避免一定程度的浪费,react官方还在0.14版本中加入了无状态组件,如下: // es5 function HelloMessage(props) { return Hello {props.name...牛刀小试,直接把一些不需要更新的组件返回false 下面我们以音量图标为例,这是一个svg图标,不需要更新,所以直接return false import React, {Component} from...={this.props.className}>foo; } } 引用类型数据 既然引用类型数据一直返回true,那就得想办法处理,能不能把前后的数据变成不一样的引用呢,那样不就不相等了吗

1.2K70
领券