Я не мог воспроизвести проблему, но я пытался.У меня есть элемент Material UI с дочерним элементом, который я добавил в него.Значок / ребенок - это крестик в углу.Вкладка / родитель - это окружающее поле.
Две проблемы:
- Я хочу щелкнуть по дочернему элементу, но родитель полностью его закрывает иребенок не получает щелчок.
- Даже если щелкнуть по нему, оно находится внутри поля значка
Tab
, и, похоже, это в любом случае нарушает щелчок.
handleIconClick(){
console.log('click')
}
renderIcon() {
return (
<div
tabIndex="-1"
className="icon-wrapper"
onClick={this.handleIconClick.bind(this)}
>
<Icon />
</div>
);
}
...
<Tab icon={this.renderIcon} onMouseMove={this.mouseEvent.bind(this)} label={tab.label} key={i}></Tab>})}
Я пытался решить эту проблему, используя событие onMouseMove
на Tab
выше, используя его следующим образом.
- Расположение ребенка вверхний угол родительского элемента, как показано.
- Когда курсор приблизится к дочернему элементу в углу, вручную наведите на него дочерний элемент.(Значения x & y произвольны и специфичны для этого случая)
function mouseEvent(e) {
var rect = e.target.getBoundingClientRect();
var x = e.clientX - rect.left; //x position within the element.
var y = e.clientY - rect.top; //y position within the element.
let trigger = document.querySelector('.icon-wrapper')
let parent = document.querySelector('.MuiButtonBase-root-59')
if(y <= 27 && x >= 60){
trigger.focus()
} else {
trigger.blur()
}
}
Если я переместу иконку со вкладки на страницу, она начнет работать, , поэтому я нене знаю, является ли это родительским объектом, который его блокирует, или это поле вызывает значок Tab
, вызывающий проблему.
Фокус отображается визуально, когда я попадаю в диапазон вышеуказанных координат, нощелчок никогда не срабатывает.Кажется, что мышь имеет доступ только к родительскому элементу, но при наведении указателя мыши на значок с указанным выше событием указателя мыши я регистрирую console.log(document.activeElement.className)
и появляется close-icon
, и это правильно.Итак, похоже, что эта функция не стреляет.
Мне нужно иметь возможность щелкать вкладку, поскольку она имеет собственный обработчик щелчков (не показан), поэтому его нельзя отключить. Я не нашел способа добавить к Tab
за пределами этих полей, однако, если это возможно, возможно, это может быть ответ.
Действительно, я хочу сделать, этозакройте вкладку, которая кажется довольно простой.