Как переключаться между различными стилями для кнопки onClick в React

#javascript #css #reactjs #onclick

Вопрос:

Я новичок в реагировании, и я надеялся, что кто-нибудь сможет помочь мне с этой проблемой. У меня есть несколько кнопок, которые я хочу иметь возможность нажимать и изменять цвет фона в цикле. Сначала я настроил его на работу с 2 цветами, но понял, что мне нужен нейтральный цвет, чтобы никогда не щелкать.

Прямо сейчас код настроен таким образом, что он изменяется только между 2 цветами (и должен начать использовать один из двух по умолчанию) с помощью троичного оператора, и я не уверен, как реорганизовать код, чтобы включить третий.

Я хочу, чтобы он стал серым, красным, синим, а затем снова стал серым при 3-м щелчке, чтобы начать цикл заново.

Это текущий код

   export default function letter({ letter }) {
  let upper = letter.toUpperCase();

  const [flag, setFlag] = useState(null);

  const handleClick = () => {
    setFlag(!flag);
  };

  return (
    <button
      className="letterBtns"
      onClick={handleClick}
      variant="contained"
      style={{ backgroundColor: flag ? "salmon" : "lightblue" }}
    >
      {upper}
    </button>
  );
}
 

Ответ №1:

 export default function letter({ letter }) {
let upper = letter.toUpperCase();
const [counter, setCounter] = useState(0)
let bgColorList = ['gray', 'red', 'blue']

const [flag, setFlag] = useState(null);

const handleClick = () => {
 let ctrTemp = counter >= 2 ? 0 : counter  1
 setCounter(ctrTemp)
 setFlag(!flag);
};

return (
 <button
  className="letterBtns"
  onClick={handleClick}
  variant="contained"
  style={{ backgroundColor: bgColorList[counter] }}
 >
  {upper}
 </button>
);
}
 

Ответ №2:

Вы можете обновить, как это, array и index получить vaue

 const colors = ["gray", "red", "blue"];
const [flag, setFlag] = useState(0);

const handleClick = () => {
  setFlag(flag === 2 ? 0 : flag   1);
};

style={{ backgroundColor: colors[flag] }}