【发布时间】:2021-04-27 17:55:49
【问题描述】:
我有一个反应应用程序,它在按钮内呈现一个选择元素。
<button onClick={this.handleButtonClick}>
<select value={this.state.value} onChange={this.onChange} >
<option key={1} value={1}> {"One"} </option>
<option key={2} value={2}> {"Two"} </option>
</select>
"More Text in button, which click should show alert"
</button>
当用户现在尝试从下拉列表中选择一个元素时,该事件也会传播到按钮。我怎样才能防止这种情况发生?
我已尝试根据其他 SO 帖子进行以下操作:
const stopPropagation = (e) => {
e.nativeEvent.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
};
onChange = (e) => {
stopPropagation(e);
this.setState({ selectValue: e.target.value });
};
代码链接:
https://codesandbox.io/s/stop-propagation-in-select-m9f8d?file=/ButtonDropdown.js
【问题讨论】:
-
你试过
e.stopPropagation()吗? -
请注意,按钮不应该有交互式后代stackoverflow.com/a/26994845/691711
-
@AndyRay :我在
onChange中进行了 stopPropagation,而我应该在onClick上进行选择。建议从下面的 sahar 回答。
标签: javascript html reactjs