【发布时间】:2021-09-01 09:23:55
【问题描述】:
在 useState 挂钩的帮助下,尝试仅显示 div 的一个元素并重置数组中的所有其他元素。
我以布尔数组的形式创建了一个初始状态,表示每个元素的显示值(true 表示显示,false 表示隐藏)。在每个元素上传递一个 onClick 事件处理程序,这会将数组的所有值更改为 true,并将唯一在其索引处单击的元素更改为 false。我附上了下面的代码。此外,props.id 包含组件的索引/键。
代码
import React,{useState} from "react";
import myComponent from "./Components/myComponents.js";
const Add = (props) =>{
const [showVals,changeShowVals]=useState([true,true,true,true,true,true,true]);
const displayHandler=(id)=>{
const x=id;
const vals=new Array(7).fill(true);
vals[x]=!vals[x];
changeShowVals(vals);
}
return(
<div>
{showVals[props.id]?
<myComponent onClick={()=>displayHandler(props.id)}/>:null}
</div>
);
}
export default Add;
【问题讨论】:
-
您需要在点击时隐藏组件。是吗?
-
如果我的理解正确,您希望在
props.id位置显示数组中的组件之一。您的代码应该在您单击它时将其隐藏,看起来它已经在执行此操作,并且任何先前单击的元素都将重置为 true(如图所示)。你的标题说“只显示一个元素,其余的应该隐藏”,而你在谈论你的问题中的“唯一点击的元素”。你想达到什么目的? -
是的,我想显示点击的组件并重置之前点击的元素。
-
这个解决方案的问题是,当我点击第一个显示/隐藏按钮时,它会显示正确的组件,但是当我点击第二个显示/隐藏按钮时,它应该隐藏第二个组件并显示第一个组件,在这种情况下它似乎没有这样做。 @SarunUK
-
是的,我马上给你提供
标签: javascript reactjs