Итак, у меня есть SideDrawer, который я рендерил следующим образом в корневом компоненте приложения:
render() {
const { isOpen } = this.props;
return (
<BrowserRouter>
<SideDrawer />
{/* isOpen && <SideDrawer /> */}
<Routes ..../>
</BrowserRouter>
);
}
}
Это редуктор:
export const drawer = (state = initialState, { type, payload }) => {
switch (type) {
case CLOSE_DRAWER:
return { ...state, isOpen: false };
case OPEN_DRAWER:
return { isOpen: true, movieId: payload };
default:
return state;
}
};
И в SideDrawer
компонент, я использовал состояние ящика и css для обработки перехода:
export const SideDrawer = ({ isOpen, closeDrawer, movieId }) => {
const drawerClass = cx({
container: true,
open: isOpen,
});
return (
<div className={drawerClass}>
<button className={styles.button} onClick={closeDrawer}>
<img src={backButton} alt={text.alt} />
</button>
<MovieBanner movieId={movieId} />
</div>
);
};
Теперь мой наставник хочет, чтобы я сделал условный рендеринг SideDrawer.Если isOpen
истинно, то визуализируйте SideDrawer.Однако проблема в том, что переход не сработает, потому что я буду рендерить SideDrawer
только тогда, когда состояние isOpen
истинно.Единственный способ, которым он сейчас работает, - это просто отображать его все время на компоненте App
, чтобы отслеживать состояние и добавлять свой переход CSS при изменении состояния с false
на true
Мой наставник упомянул, что рендеринг SideDrawer возможен только в том случае, если SideDrawer открыт, но мне нужно, чтобы он отображался, чтобы знать его предыдущее состояние. Нет?