React lazy with data prefetching concept
const NetworkAware = ({init,...props}) => {
return init ? <div>ONLINE {init.data}</div> : <div>OFFLINE</div>
}
const prefetch => data => Wrapped => props => {
return (<Wrapped {...props} {...data}/>)
}
const LazyComp = React.lazy(async () => {
const {default:_Component} = await import('./NetworkAware')
try {
const response = await fetch('api.somesite.com')
return {default: prefetch({init:response.json()})(_Component) }
} catch(err) {
return {default:_Component}
}
})