Теперь это можно сделать в Chrome, Safari, FF4 + и IE10pp4 +!
См. ответ этого вопроса для получения дополнительной информации: Обновление адресной строки с новым URL без хеша или перезагрузка страницы
Пример:
function processAjaxData(response, urlPath){
document.getElementById("content").innerHTML = response.html;
document.title = response.pageTitle;
window.history.pushState({"html":response.html,"pageTitle":response.pageTitle},"", urlPath);
}
Затем вы можете использовать window.onpopstate
для поиска навигации по кнопке назад / вперед:
window.onpopstate = function(e){
if(e.state){
document.getElementById("content").innerHTML = e.state.html;
document.title = e.state.pageTitle;
}
};
Более подробный обзор манипулирования историей браузера см. В этой статье MDN .
Это пример того, как показать загрузчик в течение пяти секунд, используя state
и setTimeout()
. Вместо <Loader/>
вы можете указать splash screen component
.
import React, { Component } from 'react';
import Drawer from '../Drawer/Drawer';
import Loader from '../../components/UI/Spinner/Loader/Loader';
class App extends Component {
state = {
loading: true
}
componentDidMount(){
setTimeout(() => {
this.setState({loading: false});
}, 5000);
}
render() {
return (
<React.Fragment>
{
this.state.loading ? <Loader />: <Drawer />
}
</React.Fragment>
);
}
}
export default App;
Надеюсь, это поможет!
Так что просто зайдите в ваш index.html внутри вашей общей папки и внутри
<div id="root"><-- Add Splash screen html code here --></div>
добавьте ваш код заставки, когда реагирует на загрузку, он заменяет весь контент внутри div id root
Я не уверен, будет ли это работать вообще, это не проверено, но, может быть, оно приведет вас в правильном направлении? Итак, вот мои 2 цента
withSplash.js
const withSplash = MyAppComponent =>
class extends React.Component {
state = {
showSplash: true
}
componentDidMount () {
handleSplashComponent();
}
componentWillUnmount () {
if (this.timer) {
this.timer = null;
}
}
handleSplashComponent = () => {
this.timer = setTimeout(()=> {
this.setState({
showSplash: false
})
}, 3000)
}
render () {
return this.state.showSplash
? <SplashComponent />
: <MyAppComponent />
}
}
App.js
class App extends Component {
...
}
export default withSplash(App);
[119 ] AnotherComponent.js
class AnotherComponent extends Component {
...
}
export default withSplash(AnotherComponent);