У меня есть меню ниже:
Таким образом, в идеале вы должны нажать на эти 3 точки, которые откроют еще одно поле рядом с нимЯ решил использовать popover (https://material -ui.com / components / popover / ). Проблема в том, что при нажатии на 3 точки ничего не происходит. Я предполагаю, что это потому, что функция onClick возвращает функциональный компонент popover, но он не отображается. Я вставляю отладчики и оповещения в функциональный компонент, не нажимая вообще.
Это те 3 точки
<IconButton
aria-describedby="simple-popover"
variant="contained"
onClick={e => this.moreClick(e, props.children)}
>
<More />
</IconButton>
Это большеНажмите функцию
moreClick = (e, officeAccount) => {
return (
<AccountFavoritesPopover element={e} officeAccount={officeAccount} />
);
};
Этовесь popover
import React from "react";
import Popover from "@material-ui/core/Popover";
export default function AccountFavoritesPopover(element, officeAccount) {
const anchorEl = element;
const open = Boolean(anchorEl);
const id = open ? "simple-popover" : undefined;
return (
<div>
<Popover
id={id}
open={open}
anchorEl={anchorEl}
//onClose={alert}
anchorOrigin={{
vertical: "top",
horizontal: "right"
}}
transformOrigin={{
vertical: "top",
horizontal: "left"
}}
>
<div>{officeAccount}</div>
</Popover>
</div>
);
}
Должен ли popover находиться внутри основного файла? В настоящее время 3 точки находятся в главном файле, а AccountFolatedPopover - это отдельный файл.
Я попытался поместить код "AccountFlectedPopover" в основной файл, но не могу использовать useState в основном файле, потому что это класс. Кроме того, я не могу преобразовать его в фактическое состояние и использовать setState, потому что после запуска setState меню исчезнет ...
Редактировать: Ниже находится меню
<Creatable
id="Select"
menuIsOpen={this.state.Focused}
components={{
Option: this.Option
}}
/>
Ниже приведены параметрывнутреннее меню
<div style={{ position: "relative" }}>
<components.Option {...props} />
<div id="MoreBox">
<IconButton
aria-describedby="simple-popover"
variant="contained"
onClick={e => this.moreClick(e, props.children)}
>
<More />
</IconButton>
</div>
</div>