gpt4 book ai didi

javascript - span 不会在列表中触发 OnClick react 子组件

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:12:52 25 4
gpt4 key购买 nike

当父级通过 OnClick 触发时,我有 2 个组件,具有 span 元素的子级根本不触发 OnClick。当 parent 是按钮时我尝试它并且它完美地工作但是当 parent 是列表时它不会触发 child 。

class Menu extends Component {
handleItemClick=(e)=>{
// whatever ..
}
render(){
return(
<ul>
{
items.map((item, i)=>(
<li key={i}
id={i}
onClick={this.handleItemClick}>
<Child />
{item}
</li>
))
}
</ul>
)
}

class Child extends Component {
handleSpanClick=(e)=>{
console.log("It works!")
}
render(){
return(
<span onClick={this.handleSpanClick}></span>
)
}

最佳答案

@bunion 的回答是正确的!

它不会触发您的 handleSpanClick()处理程序,因为 <span></span>你正在渲染的是空的。

要么在其中放置一些内容,要么调整 CSS 显示属性 - 将其更改为 blockinline-block并添加一些 heightwidth .在开发时,您还可以设置背景颜色,这样您就可以真正看到 <span></span> 在哪里。是。

你的代码很好。这是一个证明,运行这个片段:

class Menu extends React.Component {
handleItemClick=(e)=>{ /* whatever .. */ }
render() {
return(
<ul>
{ this.props.items.map((item, i) => (
<li key={i} id={i}
onClick={this.handleItemClick}>
<Child />
{item}
</li>
))}
</ul>
)
}
}

class Child extends React.Component {
handleSpanClick=(e)=>{ console.log("It works!"); }
render(){
return (
<span onClick={this.handleSpanClick}>
CLICK ME (I am span)
</span>
);
}
}

ReactDOM.render(<Menu
items={[
'-- I am list item, 1',
'-- I am list item, 2',
'-- I am list item, 3'
]} />,
document.getElementById('app')
);
/* So we could see better where it is */
span {
background-color: lightgreen;
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

<div id="app"></div>

关于javascript - span 不会在列表中触发 OnClick react 子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com