reactjs - 在单个组件内定义多个状态变量?
问题描述
我希望制作一个可以在其中折叠的标签,然后多次迭代父级。这样我关闭/打开一个不会影响另一个。
例子:
data.map((data)=>{
<div id="parent">
<div>data.user</div>
<div>
{
(this.state.open)===true ?
<div id="child">data.userDetails</div>
: <div>{null}</div>
}
</div>
</div>
})
我正在寻找动态定义“状态变量”。您可以看到我正在映射一个数组并尝试读取用户 ID。单击 userId 后,将调用“this.setState({open:true})”并打开用户详细信息。
解决方案
您应该创建一个类用户组件并在其中处理单击操作,而不是那样做。这样,每个用户组件的行为都将独立于其他组件。
data.map((data)=>{
return <UserComponent user ={data.user} userDetails ={data.userDetails}/>
});
比在您的用户组件中
class UserComponent extends React.Component{
constructor(props){
super(props);
this.state{
open:false
}
this.toggleDetails = this.toggleDetails.bind(this);
}
toggleDetails =()=>{
this.setState((prevState)=>{open:!prevState.open}); //toggle Open state
}
render(){
let {user, userDetails} = this.props //destructing of object
return(
<div id="parent" onClick ={this.toggleDetails}>
<div>data.user</div>
<div>
{
(this.state.open)===true ?
<div id="child">userDetails</div>
: <div>{null}</div>
}
</div>
</div>
);
}
}
推荐阅读
- php - 使用 xPath 从 html 创建节标题元素的编号有序列表
- angular - Angular Routes 不适用于 cloudfront + s3
- python - Python Spark - 如何在数据帧上创建一个对现有列进行切片的新列?
- google-api - 使用适用于 .NET Core 的 Google.Apis.Core,当我指定空格 =“照片”时,为什么在我的 Google 照片中看不到照片列表?
- javascript - 每次 webpack 更新后必须重新连接游戏手柄
- javascript - 链表替换和删除
- java - 如何在 SQL (JPA) 中使用带有 IN 运算符的嵌套 SELECT 语句?
- python - 数据框中特定行的总和
- apache-pig - 从猪拉丁文文件中读取元组
- python-3.x - 在轴上添加单位