【问题标题】:How to keep button highlighted when clicked in React?在 React 中单击时如何保持按钮突出显示?
【发布时间】:2021-11-28 12:31:28
【问题描述】:

我是 React 新手,并试图弄清楚如何在单击时保持按钮突出显示。期望的行为就像一个表单,向用户询问一个问题,并且可以选择多个答案来提交。单击的每个答案(按钮)都将保持突出显示。有没有办法达到这个效果?

<>
  <Stack gap={2} className="col-md-5 mx-auto">
    <h1>Question to ask user ?</h1>
    <br />
    <Button>Option 1</Button>
    <Button>Option 2</Button>
    <Button>Option 3</Button>
    <Button>Option 4</Button>
    <Button>Option 5</Button>
  </Stack>
</>

【问题讨论】:

标签: reactjs button click react-bootstrap highlight


【解决方案1】:

我认为您可能对这篇文章的最佳答案感兴趣:How to keep :active css style after click a button。我认为他们提供的 JS 答案正是您要寻找的,只是不包括删除类部分。

【讨论】:

  • 没有任何解释的代码是没有用的。你能详细说明一下吗?
【解决方案2】:

创建扩展 Button 的新组件并在其中分配状态。

    class NewButton extends React.Component {
    
        constructor(props) {
            super(props);
            this.state = {
                selected: null
            }
        }
    
        buttonSelected = selected => ev => {
            this.setState({ selected })
        }
    
        render() {
            return (
                <Button className={key === this.state.selected ? 'selected' : ''}>
                     {this.props}
                <Button>
    );
        }
    }

【讨论】:

    【解决方案3】:

    如果您只想在单击时突出显示按钮,您可以根据具体情况使用 css 选择器,例如 :visited:active


    但是您要求的内容需要其他内容,也许您可​​以为此使用复选框,也可以使用此

     class Form extends React.Component {
        state = {
            selected: [],
        };
    
        selectButton = (name) => {
            const tempSelected = { ...this.state.selected };
            tempSelected.push(name);
            this.setState({ selected: tempSelected });
        };
        isSelected = (name) => {
            return this.state.selected.includes(name);
        };
    
        render() {
            return (
                <>
                    <button onClick={(e) => selectButton("A")} className={this.isSelected("A") ? "selected" : ""}>
                        A
                    </button>
                    <button onClick={(e) => selectButton("B")} className={this.isSelected("B") ? "selected" : ""}>
                        B
                    </button>
                    <button onClick={(e) => selectButton("C")} className={this.isSelected("C") ? "selected" : ""}>
                        C
                    </button>
                    <button onClick={(e) => selectButton("D")} className={this.isSelected("D") ? "selected" : ""}>
                        D
                    </button>
                </>
            );
        }
    }
    
    

    【讨论】:

    • 我确信这可能非常简单,但我该如何实现呢?我将您提供的内容放在一个名为 Form.JS 的新文件中,但我现在如何在我的 App.js 中显示它?
    • 在你使用的页面组件中导入它(主要是App.js,除非你使用react-router-dom,在这种情况下页面带有路由'/')并创建一个名为@987654326的css类@ 并添加上面提到的具有不同颜色或边框的选择器以了解其工作原理
    猜你喜欢
    • 2015-02-24
    • 1970-01-01
    • 2011-08-22
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2011-01-28
    相关资源
    最近更新 更多