如何在 React Fabric-UI 的 CommandBar 中显示 Persona 组件?

How can I display a Persona component in a CommandBar in React Fabric-UI?

我试图在我的 CommandBar 组件的最右侧显示一个 Persona 组件,我将其用作我的应用程序的 header。

这是一个代码片段

const getFarItems = () => {
  return [
    {
      key: 'profile',
      text: <Persona text="Kat Larrson" />,
      onClick: () => console.log('Sort')
    }
  ]
}


const FabricHeader: React.SFC<props> = () => {
  return (
    <div>
      <CommandBar
        items={getItems()}
        farItems={getFarItems()}
        ariaLabel={'Use left and right arrow keys to navigate between commands'}
      />
    </div>
  );
}

这会引发类型错误,因为 text 道具需要一个字符串而不是一个组件。如有任何帮助,我们将不胜感激!

ICommandBarItemProps 下有一个名为 commandBarButtonAs 的 属性 docs 状态:

Method to override the render of the individual command bar button. Note, is not used when rendered in overflow

它的默认组件是 CommandBarButton 基本上是 Button

基本上有两种方法可以做到这一点。

  1. 继续使用 Button,并应用您自己的渲染器。基本上 IButtonProps 您可以添加 onRenderChildren 这将允许您添加任何组件,例如要渲染的 Persona。这个例子会告诉你它是如何完成的 https://codepen.io/micahgodbolt/pen/qMoYQo
const farItems = [{
    // Set to null if you have submenus that want to hide the down arrow.
    onRenderMenuIcon: () => null, 
    // Any renderer
    onRenderChildren: () => ,
    key: 'persona',
    name: 'Persona',
    iconOnly: true,
}]
  1. 或者添加你自己的不依赖于 CommandBarButton 的疯狂组件,但这意味着你需要自己处理所有事情,比如焦点、可访问性。这个例子会告诉你它是如何完成的 https://codepen.io/mohamedhmansour/pen/GPNKwM
const farItems = [
  {
    key: 'persona',
    name: 'Persona',
    commandBarButtonAs: PersonaCommandBarComponent
  }
];

function PersonaCommandBarComponent() {
  return (
    
  );
}