javascript - 嵌套地图中的Reactjs handleclick绑定不起作用
问题描述
我正在用 React 编写一个简单的博客组件。map
该组件从第二个文件中获取帖子,并使用(特别是两个嵌套的)呈现内容和主题标签 map
。我试图创建一个在单击时突出显示主题标签的部分,因此我正在关注这个问题的答案片段。事实是它不起作用,特别是它不起作用的是绑定通过bind
(检查console.log
输出)
class Blog extends React.Component {
state= {
open: {}
}
handleClick = (k) => {
let linkOpenState = true;
if (this.state.open.hasOwnProperty(k)) {
linkOpenState = !this.state.open[k];
}
this.setState({ open: { [k]: linkOpenState } })
}
render(){
return(
posts.map(i=>(
<div class="box">
<article class="media">
<div class="media-content">
<div class="content">
<h1 class="title">{i.title}</h1>
<p>
{i.content}
</p>
</div>
<div class="tags">
{i.hash.map(k=>(<span id={k} onClick={this.handleClick.bind(this,k)} class={this.state.open[k]? "tag is-primary" : "tag"} >{k}</span>))}
</div>
</div>
</article>
</div>))
)
}
}
export default Blog
有人知道那里出了什么问题吗?嵌套地图是绑定的问题吗?
解决方案
React 期望单个元素作为返回。您可以通过将返回包装在片段中来解决此问题,如<React.Fragment>
or <>
。此外,您不需要绑定箭头函数(handleClick
映射时i.hash
)。
render(){
return(
<>
posts.map(i=>(
<div class="box">
<article class="media">
<div class="media-content">
<div class="content">
<h1 class="title">{i.title}</h1>
<p>
{i.content}
</p>
</div>
<div class="tags">
{i.hash.map(k=>(<span key={k} id={k} onClick={() => this.handleClick(k)} class={this.state.open[k]? "tag is-primary" : "tag"} >{k}</span>))}
</div>
</div>
</article>
</div>))
</>)}}
推荐阅读
- ruby - 将函数从一个类传递给另一个类时出现未定义的方法错误
- r - 将图旋转 90 度以进行边际分布
- filtering - (Odoo)如何过滤保存在模型字段中的行/实体?
- c# - 根据 ObservableCollection 中项目的属性使用 CanExecute 创建命令
- windows - 更改 cygwin 主路径
- javascript - 如何从 nodejs 服务器 WebRTC 在 VLC 上创建链接
- swiftui - swiftUI如何创建气泡效果?
- react-native - 使用云端设备发布到 App Store
- javascript - 'PUT' 对数据库的请求正在添加错误的值
- python - 需要参数python的函数