javascript - 拖动子级时如何避免拖动父级?
问题描述
我已经添加到我的React
应用导航栏,用户可以拖动项目和替换位置。(工作正常!)
现在我正在尝试递归地渲染导航树,因此可以拖动和替换内部导航(无需重新设置)。
递归渲染工作正常,但问题是拖动内部子节点会导致拖动整个父节点。
NodeWrapper.js
:
export class NodeWrapper extends Component {
public render() {
return (
<DragList onItemMoved={this.props.onItemMoved}>
{this.props.navItems
.map((component, index) => (
<Node key={`node-${index}`} {...component}/>
))}
</DragList>
);
}
}
Node.js
:
public render() {
return (
<div>
<span>{this.props.label}</span>
{this.props.childNodes && (
<NodeWrapper navItems={this.props.childNodes} />
)}
</div>
);
}
*注意,DragList
组件真的很大,我认为它与问题无关,如果被问到会添加。基本上,它呈现一个能够使用事件处理程序拖动它们的子列表。
我尝试event.stopPropagation()
为拖动事件处理程序添加,但它仍然捕获并拖动整个父节点。
如何在所有级别之间执行拖动?
解决方案
推荐阅读
- python-3.x - 更改列表副本的函数
- sympy - 如何打印 sympy 矩阵....为什么要换行?
- junit - 使用 mockito 进行 WebClient GET 单元测试
- java - 如何为 WebFlux APIS 中的每个自定义请求类设置 HttpHeaders 数据?
- jquery - 多个光滑问题
- setup-deployment - .NET - 安装程序检测到文件自最初发布以来已更改
- sql - JPQL:当数据库中不存在对象时切换/案例
- sql - Oracle XML 需要 2 行数据值,而不是 1 行 XMLTYPE
- javascript - 使用javascript在qml webview中加载页面时出错
- mysql - 使用多个表和过滤器对 SQL 进行排名