import './App.scss'; import 'bootstrap/dist/css/bootstrap.css'; import React, { Component, Fragment } from 'react'; import { connect } from 'react-redux'; import { BrowserRouter } from 'react-router-dom'; import Router from './Router'; import ScrollToTop from './shared/components/ScrollToTop'; import { AppState } from './store'; import { fetchUser, logHelloWorld } from './store/auth/actions'; import { INITIAL_AUTH_STATE } from './store/auth/reducers'; import { AuthState } from './store/auth/types'; interface AppProps { auth: AuthState; logHelloWorld: typeof logHelloWorld; fetchUser: any // Thunk Methods must be set to type any } interface AppComponentState { loaded: boolean; loading: boolean; } class App extends Component { static defaultprops = { auth: INITIAL_AUTH_STATE } state = { loading: true, loaded: false, } UNSAFE_componentWillMount() { this.props.logHelloWorld(); this.props.fetchUser('Fake User Id'); } componentDidMount() { window.addEventListener('load', () => { this.setState({ loading: false }); setTimeout(() => this.setState({ loaded: true }), 500); }); } render() { const { loaded, loading } = this.state; return ( {!loaded && (
) }
); } } const mapStateToProps = (state: AppState) => ({ auth: state.auth }); const mapDispathToProps = { logHelloWorld, fetchUser } export default connect(mapStateToProps, mapDispathToProps)(App);