我正在try 用Reaction制作一个测验应用程序.

我目前在主测验页面上工作,其中我有4个按钮,每个按钮都表示我从题库导入的答案.

我希望突出显示当前选定的按钮,为此,我当前使用每个按钮的状态.有没有办法只使用一种状态并处理所有四个按钮,因为这种方法太繁琐,不能用于大量这样的按钮?另外,我只想要一个按钮,用户最后 Select 的那个按钮被突出显示.因此,我需要将所有其他按钮的状态设置为null,这会使任务更加单调乏味.

以下是包含按钮的div

<div>
  <button className={selected1} onClick={() => dealingWithOptions("A")}>{questions[currentQuestion].optionA}</button>
  <button className={selected2} onClick={() => dealingWithOptions("B")}>{questions[currentQuestion].optionB}</button>
  <button className={selected3} onClick={() => dealingWithOptions("C")}>{questions[currentQuestion].optionC}</button>
  <button className={selected4} onClick={() => dealingWithOptions("D")}>{questions[currentQuestion].optionD}</button>
</div>

以下是处理选项点击的函数

const [selected1,setSelectedButton1] = useState("")
const [selected2,setSelectedButton2] = useState("")
    
const dealingWithOptions = (op) => {
  setOptionChosen(op);
  if (op=="A") {
    setSelectedButton1("selected1"); 
    setSelectedButton2("")
    setSelectedButton3("")
    setSelectedButton4("")
  } else if (op=='B') {
    setSelectedButton1(""); 
    setSelectedButton2("selected2")
    setSelectedButton3("")
    setSelectedButton4("")    
  } else if (op=='C') {
    setSelectedButton1(""); 
    setSelectedButton2("")
    setSelectedButton3("selected3")
    setSelectedButton4("");
  }
  else if (op=='D') {
    setSelectedButton1("");
    setSelectedButton2("")
    setSelectedButton3("")
    setSelectedButton4("selected3");
  }
}

推荐答案

我建议使用一个状态来存储所选的选项(因此可以是A、B、C或D),然后在您的JSX部件中有一个条件,它将类名"SELECTED"分配给Appropiate按钮.

如果 Select 改变了,状态也会改变,这会触发重现(所以你甚至不需要移除"选定"的类,因为它只会被赋予(而且只是)重现上的正确类

Css相关问答推荐

Primeng Angular更改p-dialog背景 colored颜色

如何将此 Select 器转换为TailWind类

Firefox中的解决方法:has(不使用JavaScript)

将特定样式应用于递归Angular 元素

仅 Select 嵌套 div 的底部,而不知道它们的嵌套程度

为什么 KaTeX 的彩虹文本只能在 Firefox 上运行?

如何为图像堆叠效果下方的图层实现与磨砂玻璃类似的视觉效果

React MUI 从 CSS 伪元素中删除内容

CSS Select 器 $parent > $child Select 嵌套列表中的所有
  • 子元素
  • 如何按列垂直对齐项目,但不在列内水平对齐

    如何使用显示网格制作不同大小的列取决于元素的数量

    没有 colored颜色 Select 器的 JavaFX colored颜色 Select 器

    没有 colored颜色 Select 器的 JavaFX colored颜色 Select 器

    不同的背景 colored颜色 取决于 URL

    Icomoon:如何避免重复索引(具有相同内容 ID 的不同图标)?

    在 IE9-10 中压缩 SVG 的背景大小

    Sass 无效的 CSS 错误:预期的表达式

    如何防止内联块 div 换行?

    background-position-x (background-position-y) 是标准的 W3C CSS 属性吗?

    CSS属性中的auto值是什么意思.