这个问题可能是由于绑定的点击事件在父元素和子元素之间既有重叠又有不完全覆盖所引起的。建议添加额外的代码来确保只有父元素触发消息调度。例如:
let parentOnClick dispatch state =
// 点击父元素的处理代码
dispatch someMsg
let childOnClick dispatch state =
// 点击子元素的处理代码
// 确保不会触发父元素的处理代码
JsUtil.stopPropagation
dispatch someOtherMsg
// 在父元素中添加 onClick 绑定,传入 parentOnClick 函数
let parentElement =
div [ onClick (parentOnClick dispatch state) ] [
// 父元素的代码
childElement [ onClick (childOnClick dispatch state) ] [
// 子元素的代码
]
]
在这个例子中,我们给父元素添加了一个 onClick 绑定,使用 parentOnClick 函数来处理点击事件。而子元素的点击事件则使用 childOnClick 函数来处理,并添加了一个 JsUtil.stopPropagation() 方法来阻止事件冒泡,从而确保不会触发父元素的处理代码。