亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 React 中單擊時動態更改 SVG 類的顏色?

在 React 中單擊時動態更改 SVG 類的顏色?

qq_笑_17 2022-12-02 11:20:19
我有一個 React 組件,其中包括一個顏色選擇器和一個具有不同區域的 SVG,這些區域可以彼此獨立地填充。我的目標是能夠單擊顏色選擇器中的一種顏色,然后單擊 SVG 的一個區域,然后在該區域中填充所選顏色。這是我的組件代碼import React, { useState } from "react";import { GithubPicker } from "react-color";//componentsimport "./css/CustomCreation.css";function CustomCreation() {  const [color, setColor] = useState("");  const colorList = ["#000000", "#ffffff", "#ff0000"];  return (    <div>      <div>        <GithubPicker          colors={colorList}          color={color}          onChange={(updatedColor) => setColor(updatedColor.hex)}          width="100px"        />        <div>You selected {color}</div>      </div>      <svg        version="1.0"        xmlns="http://www.w3.org/2000/svg"        width="200"        viewBox="0 0 370.000000 1000.000000"        preserveAspectRatio="xMidYMid meet"      >        <g transform="translate(0.000000,1000.000000) scale(0.100000,-0.100000)">          <g className="outline">            <path              id="outline"              fill="black"            />          </g>          <g className="headwear">            <path              id="cap"            />            <path              id="brim"            />          </g>          <g className="skin">            <path              id="face"            />            <path              id="wrist"            />          </g>          <g className="top">            <path              id="top"            />          </g>          <g className="pants">            <path              id="pants"            />          </g>          <path            class="gap"            id="gap"            fill="white"          />          <g className="shoes">            <path              id="rightshoe"            />            <path              id="leftshoe"            />          </g>        </g>      </svg>    </div>  );}export default CustomCreation;如果我像這樣改變一行<g className="headwear" fill={color}>相應的className將成功填充為選擇的顏色。有什么辦法可以讓標簽中的 onClick 發揮作用?
查看完整描述

2 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

我不知道這是否符合你的需要,但看看我的代碼和框


https://codesandbox.io/s/amazing-greider-kdjoc


我所做的是聲明一個新colors變量,它將所有類名作為屬性保存。


然后在每個 g 標簽上我放置如下代碼:


      <g

        className="top"

        fill={colors.top ? colors.top : "black"}

        onClick={() => {

          setColors({ ...colors, top: color });

        }}

      >

我的沙箱有這種方法用于top和pantsg 標簽。您當然也可以填充所有其他人。我只是想告訴你我是如何讓它發揮作用的。


查看完整回答
反對 回復 2022-12-02
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

當然。

<g 
    className="headwear"
    fill={color}
    onClick={() => {        setColor("#FF0000");
    }} 
> 
    ... 
</g>

我建議為g標簽創建一個功能性的反應組件來管理onClick 顏色狀態。


查看完整回答
反對 回復 2022-12-02
  • 2 回答
  • 0 關注
  • 274 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號