Reactjs 选择多个复选框而不切换
我是新来的。我试图创建一个组件,在单击复选框时隐藏一个div。我遇到的问题是,如果我引入多个复选框,就会切换divs可见性。是否有其他方法允许选择所有复选框 功能应该是:单击复选框或多个>div保持隐藏,直到清除或取消选中所有复选框 JSX:Reactjs 选择多个复选框而不切换,reactjs,gatsby,next.js,Reactjs,Gatsby,Next.js,我是新来的。我试图创建一个组件,在单击复选框时隐藏一个div。我遇到的问题是,如果我引入多个复选框,就会切换divs可见性。是否有其他方法允许选择所有复选框 功能应该是:单击复选框或多个>div保持隐藏,直到清除或取消选中所有复选框 JSX: import React,{useState}来自“React”; 函数组件(){ const[isChecked,setIsChecked]=useState(false); const toggle=()=>setIsChecked(!isChecke
import React,{useState}来自“React”;
函数组件(){
const[isChecked,setIsChecked]=useState(false);
const toggle=()=>setIsChecked(!isChecked);
返回(
选项
选项
内容
同侧眼睑
)
}
导出默认组件
要实现您所描述的功能,您可以对复选框使用受控输入,并对每个复选框使用单独的状态。下面是一个示例的演示(如果需要显示div,并且仅当选中所有复选框时,您可以将shoulldshow
标志中的some
更改为every
)
函数应用程序(){
const[isChecked,setIsChecked]=useState({option1:false,option2:false})
常量切换=({target:{name}})=>
setIsChecked({…isChecked,[name]:!isChecked[name]})
//有支票吗?
const shouldShow=Object.values(isChecked).some(val=>val)
返回(
选择1
选择2
内容
同侧眼睑
)
}
要实现您所描述的功能,您可以对复选框使用受控输入,并对每个复选框使用单独的状态。下面是一个示例的演示(如果需要显示div,并且仅当选中所有复选框时,您可以将shoulldshow
标志中的some
更改为every
)
函数应用程序(){
const[isChecked,setIsChecked]=useState({option1:false,option2:false})
常量切换=({target:{name}})=>
setIsChecked({…isChecked,[name]:!isChecked[name]})
//有支票吗?
const shouldShow=Object.values(isChecked).some(val=>val)
返回(
选择1
选择2
内容
同侧眼睑
)
}
如果从数组中呈现复选框,则始终可以检查该数组的长度是否与保持状态的选中数组的长度相同
import React, { useState } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
function App() {
const myOptions = ["option1", "option2", "option3", "option4"];
const [myChecked, setMyChecked] = useState([]);
const toggle = e => {
e.persist();
if (e.target.checked) {
setMyChecked(oldArray => [...oldArray, e.target.name]);
} else {
setMyChecked(oldArray => oldArray.filter(item => item !== e.target.name));
}
};
const showDiv = () => {
return myChecked.length === myOptions.length;
};
return (
<div>
{myOptions.map(option => (
<div>
<label>
<input type="checkbox" name={option} onChange={toggle} />
{option}
</label>
</div>
))}
<div className={showDiv() ? "block" : "hide "}>
<h3>Content</h3>
<p>lorem Ipsum</p>
</div>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
import React,{useState}来自“React”;
从“react dom”导入react dom;
导入“/styles.css”;
函数App(){
常量myOptions=[“选项1”、“选项2”、“选项3”、“选项4”];
const[myChecked,setMyChecked]=useState([]);
常数切换=e=>{
e、 坚持();
如果(例如,选中目标){
setMyChecked(oldArray=>[…oldArray,e.target.name]);
}否则{
setMyChecked(oldArray=>oldArray.filter(item=>item!==e.target.name));
}
};
常量showDiv=()=>{
返回myChecked.length==myOptions.length;
};
返回(
{myOptions.map(选项=>(
{option}
))}
内容
同侧眼睑
);
}
const rootElement=document.getElementById(“根”);
render(如果从数组中呈现复选框,则始终可以检查该数组的长度是否与保持状态的选中数组的长度相同
import React, { useState } from "react";
import ReactDOM from "react-dom";
import "./styles.css";
function App() {
const myOptions = ["option1", "option2", "option3", "option4"];
const [myChecked, setMyChecked] = useState([]);
const toggle = e => {
e.persist();
if (e.target.checked) {
setMyChecked(oldArray => [...oldArray, e.target.name]);
} else {
setMyChecked(oldArray => oldArray.filter(item => item !== e.target.name));
}
};
const showDiv = () => {
return myChecked.length === myOptions.length;
};
return (
<div>
{myOptions.map(option => (
<div>
<label>
<input type="checkbox" name={option} onChange={toggle} />
{option}
</label>
</div>
))}
<div className={showDiv() ? "block" : "hide "}>
<h3>Content</h3>
<p>lorem Ipsum</p>
</div>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
import React,{useState}来自“React”;
从“react dom”导入react dom;
导入“/styles.css”;
函数App(){
常量myOptions=[“选项1”、“选项2”、“选项3”、“选项4”];
const[myChecked,setMyChecked]=useState([]);
常数切换=e=>{
e、 坚持();
如果(例如,选中目标){
setMyChecked(oldArray=>[…oldArray,e.target.name]);
}否则{
setMyChecked(oldArray=>oldArray.filter(item=>item!==e.target.name));
}
};
常量showDiv=()=>{
返回myChecked.length==myOptions.length;
};
返回(
{myOptions.map(选项=>(
{option}
))}
内容
同侧眼睑
);
}
const rootElement=document.getElementById(“根”);
ReactDOM.render(