SolidJS 中的条件样式

2023-12-02

我在 SolidJS 中有一个组件,看起来像这样:

const MyComponent: Component = (params) => {
  // ...
  const [votes, setVotes] = createSignal(new Set());
  const toggle = (val: string) => {
    if (votes().has(val)) {
      let _votes = votes();
      _votes.delete(val);
      setVotes(_votes);
    } else {
      let _votes = votes();
      _votes.add(val);
      setVotes(_votes);
    }
  }

  return <>
    <For each={someArray()}>{(opt, i) =>
      <button 
        style={{
          color: `${ votes().has(opt) ? "blue" : "black"}`
        }} 
        onClick={() => { toggle(opt) } }
      >
        {opt()}
      </button>
    }</For>
  </>
}

我想要发生的是,按钮的样式将根据它是否(opt在 for 循环中)存在于votes set.

但是,这段代码不起作用。投票更新时它不会更新。

votes 变量确实按预期更新。

当我给投票设置初始值时,会显示正确的样式(但之后不会更新)。

有什么解决方案可以使这项工作有效吗?


@Nick 所说的似乎是正确的,尝试改变你的toggle方法:

  const toggle = (val: string) => {
    const _votes = votes();
    _votes.has(val) ? _votes.delete(val) : _votes.add(val);
    setVotes(new Set(_votes));
  }

操场

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

SolidJS 中的条件样式 的相关文章

随机推荐

  • cx_Freeze-导入错误:无法导入名称设置

    我使用的是 Windows 7 机器 cx Freeze 4 3 1 和 Python 3 3 Python 和 cx Freeze 都是 32 位版本 我编写了一个 setup py 脚本 如下所示 import sys from cx
  • Javascript如何转义字符

    我想在 div 中插入一些 html 假设 div div 我在用 Sag html data 为了将数据插入到该 div 中 但这是我的数据的问题 table table
  • android 中有安装事件吗?

    是否有一些事件 接收器或用于处理安装后或安装后直接执行的首次执行 或者我需要它根据偏好进行模拟吗 有的是ACTION PACKAGE ADDED广播意图 但正在安装的应用程序不会收到此意图 因此 检查是否设置了首选项可能是最简单的解决方案
  • 按位与 (&) 运算符执行什么数学函数(JS)?

    一点背景知识 当我试图解决 javascript 问题以找到所有可能的子集时 我正在查看另一篇 SO 帖子 我不是在问 JS 挑战 而是问它为什么存在以及它有什么数学意义 这是代码的复制粘贴这个帖子 var arr 1 2 3 functi
  • 如何在基于 MSI 的卸载过程中停止正在运行的进程?

    我在 Windows XP 上使用 Wise Package Studio 7 0 SP2 我有一个 MSI 包装的 EXE 安装 它可以愉快地安装一些文件 然后运行安装中的其中一个文件 我们可以将其称为 app exe 因此 在 MSI
  • 在多索引 DataFrame 中添加和重命名列

    这篇文章的目的是了解如何将列添加到MultiIndex DataFrame using apply and shift 创建数据框 import pandas as pd df pd DataFrame 5777 100 5385 200
  • YouTube API v3 点赞视频,但计数器不增加

    每当我尝试通过 YouTube API 点赞某个视频时 它都会将该视频标记为点赞 但点赞计数器不会在我点赞时增加 它告诉我我喜欢这个视频 因为喜欢按钮是全绿色的 但它并没有算作喜欢 我通过 PHP 的 CURL 使用此链接 https ww
  • python selenium无法使用cookie登录youtube帐户

    警告 此线程中提供的 cookie 可能已经无效 因此您应该使用您自己的或其他一些 cookie 来执行此操作 我需要使用以下方式登录我的 YouTube 帐户饼干和硒 我可以发送请求至https www youtube com 与饼干 它
  • boost::random::uniform_real_distribution 在处理器之间应该是相同的吗?

    以下代码在 x86 32 位和 64 位处理器上产生不同的输出 应该是这样吗 如果我将其替换为 std uniform real distribution 并使用 std c 11 进行编译 它将在两个处理器上产生相同的输出 include
  • 分段错误取决于字符串长度?

    我正在编写一个程序 它将使用 getline 从 infile 读取行并将其转换为字符串 将字符串转换为包含字符串的前 m 个非空白字符的 c 字符串 然后将 c 字符串连接成单个 char 数组 示例文件可能如下所示 5 number o
  • 在 C# 中从 HTML 表中检索数据

    我想从 HTML 文档中检索数据 我正在从一个几乎完成的网站上抓取数据 但在尝试从表中检索数据时遇到问题 这是 HTML 代码 div div
  • CASE 相当于嵌套 IIF 语句

    谁能将以下嵌套 IIF 解码为 SQL 中的 CASE 语句 我知道 SQL Server 2012 中允许使用 IIF 但我发现很难轻松掌握嵌套 IIF 逻辑 以下是我的嵌套 IIF 语句 IIF IIF TABLE A Col 1 0
  • pkg-config:未找到命令,在 Windows 7 上使用 cygwin

    我在 Windows 上使用 Cygwin 来运行此命令 g pkgconfig libs cflags opencv I o mergevec mergevec cpp 但我收到一个错误 bash pkg config command n
  • 如何捕获 ES6 Promise 拒绝并完全停止流程?

    假设我有 4 个功能 runA runB runC and runD 使用 ES6 Promise 在一次完全成功的运行中 这些都将依次运行 runA then runB then runC then runD If runA or run
  • 命令超时和连接超时之间的区别

    连接超时和命令超时有什么区别 在我们的应用程序中有时会显示超时错误 当我们将命令超时值增加到 100 默认为 30 时 它就可以工作了 增加命令超时值是否有任何问题 Thanks Mahesh ConnectionTimeout 是您的代码
  • PHP - 正确检查 $_POST['variable'] 是否已发布

    我想检查 POST submit 是否已发布 我原来的代码是 if POST submit 但我有一个带有此代码的 PHP 通知 未定义索引 提交于 因此 要删除该通知 我必须这样写 if isset POST submit 但这是没有意义
  • XGBoost:将 dmatrix 转换为 numpy.array

    我想检查一下DMatrix目的 这文档提到获取行数和列数以及每行切片的方法 dmatrix slice index 但我想使用 numpy 进行更复杂的转换 有没有简单的方法可以转换DMatrix到一个 numpy 数组 DMatrix 是
  • Laravel 更快地查询控制器或视图中的所有内容

    查询控制器中的所有内容并返回每个查询更快 还是在使用视图时查询更快 假设所有模型都有关系 Example 完成控制器中的所有操作然后返回 Public function articlesHome id art Articles find i
  • 什么时候需要在 ISR 中使用 volatile?

    我正在制作嵌入式固件 初始化后的所有事情都发生在 ISR 中 我有它们之间共享的变量 我想知道在什么情况下它们需要是易失性的 我从不阻塞 等待另一个 ISR 的变化 在不使用易失性的情况下 什么时候可以确定实际内存已被读取或写入 每个 IS
  • SolidJS 中的条件样式

    我在 SolidJS 中有一个组件 看起来像这样 const MyComponent Component params gt const votes setVotes createSignal new Set const toggle va