【发布时间】:2019-07-21 22:27:34
【问题描述】:
我在 modifiers.js 中有一个映射函数,itemlist 使用它在弹出窗口中显示复选框,在执行此映射函数后,复选框停止工作。我认为是 CSS(隐藏复选框通信),因为它在没有 CSS 的情况下也能正常工作。
Modifiers.js
import React from "react";
import "./Modifiers.css";
//import "./Modifiers.scss";
const Modifiers = props => {
const id = props.childId + props.childp
return (
<form className="form">
<div>
<h2>{props.title}</h2>
<div className="inputGroup">
{props.options && props.options.map(item => {
console.log(item)
return (
<div>
<label for={id}>{item.name}</label>
<input
id={id}
name="checkbox"
type="checkbox"
/>
</div>
)
})}
</div>
</div>
</form>
);
};
export default Modifiers;
修饰符.css
.inputGroup {
background-color: #fff;
display: block;
margin: 10px 0;
position: relative;
border-radius: 20px;
}
.inputGroup label {
padding: 12px 30px;
width: 100%;
display: block;
text-align: left;
color: #3c454c;
cursor: pointer;
position: relative;
z-index: 2;
border-radius: 20px;
transition: color 200ms ease-in;
overflow: hidden;
}
.inputGroup label:before {
width: 90%;
height: 10px;
content: "";
background-color: #5562eb;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%) scale3d(1, 1, 1);
transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);
opacity: 0;
z-index: -1;
}
.inputGroup label:after {
width: 32px;
height: 32px;
content: "";
border: 2px solid #d1d7dc;
background-color: #fff;
background-image: url("data:image/svg+xml,%3Csvg width='32' height='32' viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.414 11L4 12.414l5.414 5.414L20.828 6.414 19.414 5l-10 10z' fill='%23fff' fill-rule='nonzero'/%3E%3C/svg%3E ");
background-repeat: no-repeat;
background-position: 2px 3px;
border-radius: 50%;
z-index: 2;
position: absolute;
right: 30px;
top: 50%;
transform: translateY(-50%);
cursor: pointer;
transition: all 200ms ease-in;
}
.inputGroup input:checked ~ label {
color: #fff;
}
.inputGroup input:checked ~ label:before {
transform: translate(-50%, -50%) scale3d(56, 56, 1);
opacity: 1;
}
.inputGroup input:checked ~ label:after {
background-color: #54e0c7;
border-color: #54e0c7;
}
.inputGroup input {
width: 32px;
height: 32px;
order: 1;
z-index: 2;
position: absolute;
right: 30px;
top: 50%;
transform: translateY(-50%);
cursor: pointer;
visibility: hidden;
}
.form {
padding: 0 16px;
max-width: 100%;
margin: 50px auto;
font-size: 18px;
font-weight: 600;
line-height: 36px;
}
*,
*::before,
*::after {
box-sizing: inherit;
}
html {
box-sizing: border-box;
}
code {
background-color: #9aa3ac;
padding: 0 8px;
}
其余代码您可以在 codebox 上找到。
https://codesandbox.io/s/p32k93k660?fontsize=14&moduleview=1
【问题讨论】:
-
列表中的每个孩子都应该有一个唯一的“key”属性。
-
@AkshayMulgavkar 你指的是哪个 div?
-
@Alpub 这是
-
@AkshayMulgavkar 我已经这样做了,没有任何改变
-
您的 CodeSandbox 链接似乎已损坏。什么都没有渲染。很难帮助解决这个问题。
标签: javascript html css reactjs checkbox