I am trying to add a splash screen before React loads.
since i am using react scripts / react-app my index.tsx only has this part:
ReactDOM.render(<App />, document.getElementById("root"));
i tried adding my own div on the same page but it doesn't show.
i would like to display a simple blank screen with my splash image on a 1 second timer before react loads to avoid/hide the shifting of the rendering elements.
** if i do add the screen in app.tsx, the shifting happens before the screen loads
update
as Rishabh pointed out below, index.html is in /public folder. So I ended up combining 2 approaches.
add a screen before react starts:
<div id="root"> <div id="dimScreen"> <img src="/img/logo.png" /> </div> </div>
2.
loading a proper loader non top for .5 - 1 sec
class App extends Component {
state = {
loading: true
}
componentDidMount() {
setTimeout(() => {
this.setState({ loading: false });
}, 1000);
}
render() {
return (
<React.Fragment>
{
this.state.loading ?
<Loader />
: (
<div className="app">
<Header />
<MyComponent />
</div>
)
}
</React.Fragment>
);
}
}
so far this approach is working best but will update if i find issues or something better