Пользовательский интерфейс React Fabric удаляет основной элемент

Я использую компонент Pivot в пользовательском интерфейсе Office Fabric, мне нужно удалить PivotItem для некоторых представлений. Есть ли какой-нибудь способ?

и т. д. Мне нужно удалить опорную точку «Вставить» с помощью isComposeMode() ниже

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;
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
963
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете поместить необходимые элементы в массив в зависимости от вашего состояния. Надеюсь, это поможет вам.

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>
    );
  }
pivotItems.push() добавит элемент в конец массива. Исходя из исходного вопроса, вам нужно будет использовать pivotItems.unshift(), если вы хотите добавить его в начало массива.
gscottolson 29.05.2019 20:20
Ответ принят как подходящий

Описанный выше подход с массивом великолепен, но вы можете условно включить элементы в массив, а затем отфильтровать «ложные» значения с помощью метода .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 в родительском компоненте и передать его в качестве реквизита. Это сделает ваш компонент более пригодным для повторного использования и не будет привязывать его к вашей бизнес-логике.

Другие вопросы по теме