Скрыть компонент, отображающий вкладки

#reactjs #material-ui

Вопрос:

У меня есть компонент, который отображает Tabs компонент из Material UI 5.0.0-beta.5

Есть случай, когда я установил для отображения этих компонентов значение «нет».

Но затем я получаю эту ошибку —

Material-UI: The value provided to the Tabs component is invalid. The Tab with this value ( 0 ) is not part of the document layout. Make sure the tab item is present in the document or that it's not display none.

Я понимаю ошибку, и я устанавливаю ее отображение на нет, потому что, но я хочу показать и скрыть компонент без повторного рендеринга (потому что я хочу, чтобы выбор пользователя сохранялся).

Есть ли способ исправить эту ошибку или, может быть, лучший способ сделать то, что я пытаюсь сделать?

Ответ №1:

Вы могли бы попробовать использовать visibility: hidden вместо этого

И если вы не хотите занимать место для скрытого компонента, установите его ширину и высоту равными 0, а затем измените их позже, чтобы отобразить пользовательский интерфейс.

 visibility: hidden;
width: 0;
height: 0;
 

И когда вы захотите показать его обратно:

 visibility: visible;
width: 100%;
height: 100%;
 

Ответ №2:

Вместо того, чтобы обманывать CSS, как насчет этого?

 export default function TabsContainer() {
  const [selectedTab, setSelectedTab] = React.useState(0);

  const handleChange = (event, newTab) => {
    setSelectedTab(newTab);
  };

  const hideTabs = true; // use state or sth

  return (
    <Grid>
      {!hideTabs amp;amp; (<Tabs
        value={selectedTab}
        onChange={handleChange}
        indicatorColor="primary"
        textColor="primary"
        centered
      >
        <Tab label="Item One" />
        <Tab label="Item Two" />
        <Tab label="Item Three" />
      </Tabs>)
     }
    </Grid>
  );
}
 

Вы боитесь, что выбранное состояние будет потеряно, но этого не произойдет, потому что государство живет в TabsContainer .