首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用React使整个div的行为像一个复选框

使用React使整个div的行为像一个复选框
EN

Stack Overflow用户
提问于 2019-07-17 15:38:32
回答 2查看 300关注 0票数 0

我遇到了这种情况,即显示复选框列表。在这里,我想让整个div充当一个复选框。目前,它只在复选框和标签上起作用。相反,我希望选中/取消选中整个div。

如果能帮上忙,我们将不胜感激

沙盒:https://codesandbox.io/s/modest-meninsky-9lcmb

代码

代码语言:javascript
复制
import React from "react";
import ReactDOM from "react-dom";
import { Checkbox } from "semantic-ui-react";
import "./styles.css";

export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      data: [
        { display: "CB1", checked: false, name: "cb1" },
        { display: "CB2", checked: false, name: "cb2" },
        { display: "CB3", checked: false, name: "cb3" }
      ]
    };
  }

  handleItemClick = (event, data) => {
    const index = this.state.data.findIndex(item => item.name === data.name);
    const optionsArr = this.state.data.map((prevState, i) =>
      i === index
        ? {
            display: prevState.display,
            name: prevState.name,
            checked: !prevState.checked
          }
        : prevState
    );
    this.setState({ data: optionsArr });
  };


  render() {
    return (
      <div>
        <div className="menu-item-holder">
          {this.state.data.map((item, i) => (
            <div className="menu-item" key={i}>
              <Checkbox
                onChange={this.handleItemClick}
                checked={item.checked}
                label={item.display}
                name={item.name}
              />
            </div>
          ))}
        </div>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

styles.css

代码语言:javascript
复制
.menu-item-holder {
  border: 1px solid #ccc;
  width: 150px;
}
.menu-item {
  padding: 5px 10px;
  border-bottom: 1px solid #ccc;
  cursor: pointer;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-17 15:49:28

只需为.ui.checkbox添加宽度即可。

代码语言:javascript
复制
.ui.checkbox {
   width: 100%;
}
票数 1
EN

Stack Overflow用户

发布于 2019-07-17 15:45:59

只需增加标签的宽度和父宽度即可。在styles.css中添加下面的css,

代码语言:javascript
复制
.ui.checkbox input.hidden+label {
  width:150px;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57070817

复制
相关文章

相似问题

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