javascript - 如何在 React 中标记要渲染的子实例
问题描述
在这种情况下,标记孩子实例的最佳方法是什么?返回中的我的孩子与按钮一起在 Array.map() 循环内。当我按下按钮显示 tge child 时,所有的副本都会显示出来。我怎样才能让特定的孩子展示?
state = {
isLoading: true,
team: [],
error: null,
isHidden: true
}
toggleHidden () {
this.setState({
isHidden: !this.state.isHidden
})
}
地图内部:
<span class="arrow" onClick={this.toggleHidden.bind(this)}>click</span>
{!this.state.isHidden && <p>{s.description}</p>}
解决方案
在您正在映射的数组中(我假设它的团队)拥有visibility
和的属性id
。然后将要更改其状态的孩子的 id 传递给切换功能。
class Comp extends React.Component {
constructor() {
super();
this.state = {
isLoading: true,
team: [
{ description: "hi", id: 0, isHidden: false },
{ description: "bye", id: 1, isHidden: false }
],
error: null,
isHidden: true
};
this.toggleHidden = this.toggleHidden.bind(this);
}
toggleHidden(id) {
let temp = Array(...this.state.team);
let item = temp.find(t => t.id === id);
item.isHidden = !item.isHidden;
this.setState({
team: temp
});
}
render() {
return this.state.team.map(s => (
<span>
<span class="arrow" onClick={() => this.toggleHidden(s.id)}>
click
</span>
<p>{s.isHidden && s.description}</p>
</span>
));
}
}
推荐阅读
- html - 如何以正确的格式在 html 中显示 T-SQL?
- mysql - maxscale 代理不会将来自 flask-sqlachamy 的读取请求路由到从属设备
- angular - Wordpress REST API V2 仅返回 10 个帖子
- database - Go 中的 MongoDB 连接错误:目标机器主动拒绝连接。使用来自 Mongo 网站的代码
- git - Git 提交了所有内容,但仍然出现错误:您对以下文件的本地更改将被结帐覆盖
- javascript - 如何获取兄弟元素的内部html文本
- node.js - 如何切换或更改 Input.ChoiceSet 以响应其他 Input.ChoiSet 值?
- reactjs - 如何在 Antd 中使用动态表单嵌套
- javascript - 追加选择
- javascript - Firebase - 无法获取文档,因为客户端离线(v9 升级)