首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将useState设置为只选择一种颜色

如何将useState设置为只选择一种颜色
EN

Stack Overflow用户
提问于 2022-05-23 06:03:49
回答 2查看 104关注 0票数 0

我得到了一个具有不同颜色背景的列表3 div,如果我单击其中一个,该函数将状态设置为true,它将呈现嵌套在div内的刻度图标,但我只能选择一种颜色,如何修改代码,因此如果我单击一个div,该div的状态将为true,并且该div图标将出现,但它将从其他div中消失(如果以前选择了)。

代码语言:javascript
复制
const [colorPick, setColorPick] = useState(false);

const colorPickHandler = () => {
    setColorPick(!colorPick);
  }; 

<button className="cursor-pointer" onClick={colorPickHandler}>
              <div className="mt-3 border-2 border-solid border-black bg-red-600 w-8 h-8">
                {colorPick && (
                  <svg
                    xmlns="http://www.w3.org/2000/svg"
                    className="h-6 w-6"
                    fill="none"
                    viewBox="0 0 24 24"
                    stroke="currentColor"
                    stroke-width="2"
                  >
                    <path
                      stroke-linecap="round"
                      stroke-linejoin="round"
                      d="M5 13l4 4L19 7"
                    />
                  </svg>
                )}
              </div>
            </button>
<button className="cursor-pointer" onClick={colorPickHandler}>
              <div className="mt-3 border-2 border-solid border-black bg-blue-600 w-8 h-8">
                {colorPick && (
                  <svg
                    xmlns="http://www.w3.org/2000/svg"
                    className="h-6 w-6"
                    fill="none"
                    viewBox="0 0 24 24"
                    stroke="currentColor"
                    stroke-width="2"
                  >
                    <path
                      stroke-linecap="round"
                      stroke-linejoin="round"
                      d="M5 13l4 4L19 7"
                    />
                  </svg>
                )}
              </div>
            </button>
<button className="cursor-pointer" onClick={colorPickHandler}>
              <div className="mt-3 border-2 border-solid border-black bg-pink-600 w-8 h-8">
                {colorPick && (
                  <svg
                    xmlns="http://www.w3.org/2000/svg"
                    className="h-6 w-6"
                    fill="none"
                    viewBox="0 0 24 24"
                    stroke="currentColor"
                    stroke-width="2"
                  >
                    <path
                      stroke-linecap="round"
                      stroke-linejoin="round"
                      d="M5 13l4 4L19 7"
                    />
                  </svg>
                )}
              </div>
            </button>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-23 07:22:01

colourPick应该是字符串,而不是布尔值。

它应该具有“红色”、“蓝色”或“棕色”的价值。

所以您可以做一些类似colourPick ===“red”&& renderSvg之类的事情。

票数 1
EN

Stack Overflow用户

发布于 2022-05-23 11:45:04

您可以像对象一样为所有3种颜色定义状态。喜欢,

代码语言:javascript
复制
state = {red:false, blue:false, yellow:false};
代码语言:javascript
复制
if (e.target.name === 'red') setState = { red:true, blue:false, yellow:false }
else if (e.target.name === 'blue') setState = { red:false, blue:true, yellow:false };
else if (e.target.name === 'yellow') setState = { red:false, blue:false, yellow:true }

这里的

需要在ColorPicker(e)函数中传递e参数。

并将name="red"添加到红色按钮中,并分别用于其他按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72343884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档