首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理与UseStates反应的按钮集?

如何处理与UseStates反应的按钮集?
EN

Stack Overflow用户
提问于 2022-05-23 00:55:01
回答 3查看 64关注 0票数 0

嗨,我是新的反应,尝试着让按钮在你按下的时候亮起来,但是它们在一组按钮和中,我希望其他的按钮也不要在一个按钮被按下时也亮起来。

目前,我使用的是UseState(),它只需打开和关闭所有按钮。

代码语言:javascript
复制
  const [ticket, setTicket]=useState(false)


  const ticketHandler = () => {
    setTicket (!ticket);
  }
代码语言:javascript
复制
  <button onClick={ticketHandler} className={`${ticket? 'is-success': ''} button`}>1-5</button>
  <button onClick={ticketHandler} className={`${ticket? 'is-success': ''} button`}>6-9</button>

在本例中,票证'1-5‘和票证'6-9’都亮了绿色。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-05-23 05:58:40

您只需要存储一个可以在状态中使用的值(我使用了'1-5'),然后对照它进行检查。

代码语言:javascript
复制
function RadioButtonGroup() {
  const [active, setActive] = useState('');

  const handleClick = (value) => () => {
    setActive(value);
  };

  return (
    <div>
      <button
        className={`${active === '1-5' ? 'is-active' : ''}`}
        onClick={handleClick('1-5')}
      >
        1-5
      </button>
      <button
        className={`${active === '6-9' ? 'is-active' : ''}`}
        onClick={handleClick('6-9')}
      >
        6-9
      </button>
    </div>
  );
}
票数 1
EN

Stack Overflow用户

发布于 2022-05-23 01:28:32

您应该创建一个单独的Button组件,并在其中保留亮起逻辑。这将解决你的问题。

代码语言:javascript
复制
const Button = ({ buttonText }) => {
  const [ticket, setTicket] = useState(false);

  const ticketHandler = () => {
    setTicket(!ticket);
  };

  return (
    <button
      onClick={ticketHandler}
      className={`${ticket ? "is-success" : ""} button`}
    >
      {buttonText}
    </button>
  );
};

并创建如下按钮:

代码语言:javascript
复制
<Button buttonText="1-5"/>
<Button buttonText="6-9"/>
票数 1
EN

Stack Overflow用户

发布于 2022-05-23 05:37:54

我建议给您的按钮一个值,并将其传递给您的处理程序。

并将值赋值给票证,而不是使票证成为布尔值。

所以,

代码语言:javascript
复制
const ticketHandler = (element) => {
    setTicket(element.value);

      };

const getClass = (condition) => ticket === condition ? 'is-success': ''

按钮:

代码语言:javascript
复制
<button onClick={ticketHandler} value ="oneToFive" className={`${getClass("oneToFive")} button`}>1-5</button>
<button onClick={ticketHandler} value="sixToNine" className={`${getClass("sixToNine")} button`}>6-9</button>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72342278

复制
相关文章

相似问题

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