React Fabric UI 移除 Pivot Item

React Fabric UI remove the Pivot Item

我在 Office Fabric UI 中使用 Pivot 组件,我需要删除一些视图的 PivotItem。有什么办法吗?

等我需要在下面使用 isComposeMode() 删除 'Insert' Pivot

import * as React from "react";
import { Label } from "office-ui-fabric-react/lib/Label";
import { Pivot, PivotItem } from "office-ui-fabric-react/lib/Pivot";
import InsertView from "./InsertView";

export interface PivotProps {}

export interface PivotState {}

class MainNav extends React.Component<PivotProps, PivotState> {
  render() {
    return (
      <div>
        <Pivot>
          <PivotItem headerText="Insert">
            <InsertView />
          </PivotItem>
          <PivotItem headerText="Review">
            <Label>Review</Label>
          </PivotItem>
          <PivotItem headerText="Settings">
            <Label>Settings</Label>
          </PivotItem>
        </Pivot>
      </div>
    );
  }

  isComposeMode = (): boolean => {
    if (Office.context.mailbox.item.displayReplyForm != undefined) {
      return false;
    } else {
      return true;
    }
  };
}

export default MainNav;

您可以根据您的情况将所需的项目推送到数组中。希望对您有所帮助。

render(){ 
  let pivotItems=[
    <PivotItem headerText="Insert">
            <InsertView />
    </PivotItem>,
    <PivotItem headerText="Review">
            <Label>Review</Label>
    </PivotItem>,
];

if(addLastPivot){
   pivotItems.push( 
      <PivotItem headerText="Settings">
            <Label>Settings</Label>
      </PivotItem>
   );
}

return (
      <div>
        <Pivot>
          {pivotItems}
        </Pivot>
      </div>
    );
  }

上面的数组方法很棒,但您可以有条件地在数组中包含项目,然后使用 .filter(Boolean) 方法过滤掉“虚假”值。这允许您仅在条件为真时包含该项目。

import * as React from 'react'
import { Pivot, PivotItem, InsertView, Label } from '.'

export interface PivotProps {
    isComposeMode: boolean
}

class MainNav extends React.Component<PivotProps> {
    public render() {
        const items = [
            this.props.isComposeMode && <PivotItem key="insert" headerText="Insert"><InsertView /></PivotItem>,
            <PivotItem key="review"headerText="Review"><Label>Review</Label></PivotItem>,
            <PivotItem key="settings" headerText="Settings"><Label>Settings</Label></PivotItem>
        ].filter(Boolean)

        return (
            <Pivot>
                {items}
            </Pivot>
        )
    }
}

您还应该在父组件中派生 isComposeMode 并将其作为 prop 传入。这将使您的组件更具可重用性,并且不会将其绑定到您的业务逻辑。