Помогите разобраться, пожалуйста. Ситуация такая - рендер роута не хочет заново рендерить передаваемый ему компонент. Суть в том, что есть компонент прелоадера, внутри дочерним передан компонент, который должен отрендериться после отработки прелоадера (прелоадер носит чисто косметический характер). Но конструкция свитч-роуты каким-то образом то ли сохраняет стейт прелоадера то ли просто меняет проп у него. Суть в том, что прелоадер отрабатывает только при первой загрузке сайта. Вот код:
App:
<Switch>
<Route exact path="/"
render={() => (
<Preloader>
<Home />
</Preloader>
)}
/>
<Route path="/about"
render={() => (
<Preloader>
<About />
</Preloader>
)}
/>
</Switch>
Вот прелоадер:
function Preloader({children}: any) {
const [isLoaded, setLoad] = useState(false);
const [fillBar, setFillBar] = useState({
width: '0%'
});
useEffect(() => {
setTimeout(() => setLoad(true), 1800);
setTimeout(() => {
setFillBar({
width: '100%'
});
}, 400);
}, []);
if (!isLoaded) {
return (
<NuTutKoro4ePreloader/>
);
}
return children;
};
И боль в том, что при переходе между роутами он после первой загрузки просто рендерит дочерний компонент. Ставил консоль лог на isLoaded, ожидаемо false... true ... и далее при всех переходах оно просто тру.
ну видимо реакт видит что дерево не изменилось и не ремаунтит компонент, хз
Andrey
Eugene
Evgeniy
Kurzdor
Китикет
Eugene
Cenator 🐈
Dmitry
Андрей
Dmitriy
Mihail
The end
Nazar
Tesseract
Андрей
Sergey
Sheldhur
Егор
Nikolai
artalar