Я использую Office Fabri c UI React . Я хочу создать ContextualMenu
, который используется с объектом Persona
.
В этом примере напрямую используется ContextualMenu, чтобы показать, как его можно присоединить к произвольным элементам. Остальные примеры используют ContextualMenu через компоненты Fabri c Button.
Microsoft предоставляет пример применения ContextualMenu
к любому произвольному объекту, однако, похоже, он не работает с Persona
объект. Компонент Persona
не имеет свойства ref
, и назначение ссылки на свойство componentRef
не похоже на работу.
Кажется, что компонент Persona
имеет свойство, унаследованное от интерфейс HTMLAttributes<T>
: contextMenu?: string;
, но я не понимаю, как можно использовать необязательную строку с ContextualMenu
.
const AppHeaderProfile: React.FunctionComponent<IAppHeaderProfileProps> = () => {
const personaRef = React.useRef(null);
const [showContextualMenu, setShowContextualMenu] = React.useState(false);
const onShowContextualMenu = useConstCallback(() =>
setShowContextualMenu(true)
);
const onHideContextualMenu = useConstCallback(() =>
setShowContextualMenu(false)
);
const menuItems: IContextualMenuItem[] = [
{
key: "profile",
text: "My Profile",
onclick: () => console.log("My Profile clicked")
}
];
return (
<div className="app-header-profile">
<Persona
className="user"
componentRef={personaRef}
size={PersonaSize.size32}
onClick={onShowContextualMenu}
/>
<ContextualMenu
items={menuItems}
target={personaRef}
hidden={!showContextualMenu}
onItemClick={onHideContextualMenu}
onDismiss={onHideContextualMenu}
/>
</div>
);
};