MikeRock
12/15/2018 - 4:37 PM

React Lazy with Fetch

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}
}
})