【发布时间】:2018-10-22 11:20:23
【问题描述】:
我的目录结构如下:
Todo -> TodoList -> TodoItem
我将 todos、onSelection、onDeletion 函数从 todo 传递给列表等等。
列表和项目组件都是无状态的,问题是,当我单击项目时,由于冒泡,它也会触发 onClick() 和 onSelect() 方法,我不想使用 event.stopProppogation无论如何。
我也尝试过以下无状态组件中的方法,但是在加载组件时它会启动。
待办事项:
const TodoItem = ({text, onSelection, onDeletion, id}) => {
const wrapDeletion = (id) => {
onDeletion(id);
}
return (
<li className="list-group-item" onClick={onSelection.bind(this, id)}>
{text}
<button className="btn btn-danger float-right" onClick={wrapDeletion(id)}>
{BTN_ACTIONS.DELETE}
</button>
</li>
);
}
待办事项列表:
<ul className="list-group">
{todos.map(todo =>
<TodoItem
key={todo.id}
id={todo.id}
onSelection={onSelection}
text={todo.text}
onDeletion={onDeletion}/>)
}
</ul>
待办事项:
<TodoList
todos={this.state.todos}
onSelection={onSelection}
onDeletion={onDeletion}
/>
【问题讨论】:
-
问题是在item中,当我点击onClick时,由于冒泡,它也会触发onSelect方法,请解释上面的行
标签: javascript reactjs