[英]How can I select just one item of items to be show in a component after click? in vue js
[英]How can I show a component after item clicked in react js?
所以为了让事情变得清晰和简单:
单击我的 Add User Item后,我的AdminDash组件上显示了一个AddUser组件,所有内容都显示在我的 AdminDash 上,
我的AdminDash包含SideMenu , SideMenu包含Items , Items包含Item列表让我向您展示树:
添加用户。
管理员破折号:
管理员破折号
//Some code
<SideMenu />
//Here where I want to show my addUser Component
侧边菜单
//Some code
<Items />
项目
//Some code
<Item Name="addUser" />
<Item Name="deleteUser" />
<Item Name="updateUser" />
物品
<ul>
<li
onClick={I WANT TO SHOW MY ADDUSER COMPONENT}
>
<div> {props.Name} </div>
</li>
</ul>
添加用户
//Some random code
<p> this is the add user component</p>
所以每当我点击像 AddUser 这样的项目时,我希望它的组件显示在我的 Admin Dash 上,有什么提示吗?
因此,经过多次尝试和长期研究,我几乎使用 useContext 来完成这项工作,但最终我找到了解决方案,这些是步骤:
<AdminOptions />
,其中包含呈现我的<AddUser />
和<DeleteUser />
和<UpdateUsers />
的所有逻辑。<Item />
) 传递了一个函数来调用它并将一些参数传递给父组件<AdminDash />
以告知单击了哪个项目以及要呈现哪个项目。管理员破折号
const[componentId, setComponentId]= React.useState(false);
const [show, setShowComponent] = React.useState(false);
const handleClick=(id)=>{
if(id===componentId){
setShowComponent(!show);
}
else{
setComponentId(id);
setShowComponent(true);
}
}
return (
//Here I pass the handleClick hooks to the childs
<SideMenu handleClick={handleClick} />
//my new component who will render the items component
<AdminOptions whatToShow={componentId} show={show} />
);
侧边菜单
//passing again the handleClick to childs
<Items handleClick={props.handleClick} />
项目
//I'm passing again the handleClick and giving each item an ID to differentiate between them
<Item
Name="addUser"
Id="AddUser"
handleClick={props.handleClick} />
<Item
Name="deleteUser"
Id="DeleteUser"
handleClick={props.handleClick} />
<Item
Name="updateUser"
Id="UpdateUser"
handleClick={props.handleClick} />
物品
<ul>
//here in the onClick i pass the function handleclick with an item id as a parameter
<li
onClick={()=>{props.handleClick(props.Id)}}
>
<div> {props.Name} </div>
</li>
</ul>
管理员选项
//So here is a switch case conditional rendering depending on Item's ID
switch (props.whatToShow){
case "AddUser":
return(props.show && <AddUser />);
case "DeleteUser":
return(props.show && <DeleteUser />);
case "UpdateUser":
return(props.show && <UpdateUser />);
default :
return (<> </>);
因此,当我单击添加用户项目时,它将该特定项目的 Id 传递给父组件(AdminDash),父组件(AdminDash)使用项目的 Id 执行该 handleClick,并使 AdminOptions 在 AdminDash 中显示该项目组件,我尽力了为了尽可能清楚,任何有问题的人都可以在评论中留言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.