Компонент перехода слайдов не работает при использовании 2 разных слайдов

#reactjs #material-ui #next.js

#reactjs #материал-пользовательский интерфейс #next.js

Вопрос:

Когда я использую только один слайд, либо для screen 1 текста, либо screen 2 для текста, он работает нормально.

Мой вопрос в том, почему он не работает, когда я использую два разных слайда?

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

Я пробовал это:

     export default function App() {
      const [step, setStep] = useState(1);
      const [slider, setSlider] = useState(false);
    
      const handlenext = () => {
        setStep(2);
        setSlider(true);
      };
    
      const handleprev = () => {
        setStep(1);
        setSlider(true);
      };
      return (
        <div className="App">
          {step === 1 ? (
            <Slide direction="up" in={slider} mountOnEnter unmountOnExit>
              <h1>this is screen 1</h1>
            </Slide>
          ) : (
            <Slide direction="up" in={slider} mountOnEnter unmountOnExit>
               <h1> screen 2</h1>
            </Slider>
          )}
    
          <Button onClick={() => handlenext()}>Next</Button>
          <Button onClick={() => handleprev()}>Previous</Button>
        </div>
      );
    }
  

и это:-

 export default function App() {
  const [step, setStep] = useState(1);


  
  };
  return (
    <div className="App">
      {step === 1 ? (
        <Slide direction="up" in={true} mountOnEnter unmountOnExit>
          <h1>this is screen 1</h1>
        </Slide>
      ) : (
        <h1> screen 2</h1>
      )}

      <Button onClick={() => setStep(2)}>Next</Button>
      <Button onClick={() => setStep(1)}>Previous</Button>
    </div>
  );
}
  

пожалуйста, проверьте воспроизведение по ссылке ниже.

https://codesandbox.io/s/keen-shockley-oprtk?file=/src/App.js

Ответ №1:

Переходы не работают при условном рендеринге.

Поэтому, если вы оставите функцию скрытия и отображения для самого компонента, переход будет работать.

Просто удалите условный рендеринг и присвоите значения состояния in реквизиту компонента слайда.

 <Slide direction="up" in={step === 1} mountOnEnter unmountOnExit>
        <h1>this is screen 1</h1>
      </Slide>

      <Slide direction="up" in={step === 2} mountOnEnter unmountOnExit>
        <h1> screen 2</h1>
      </Slide>