from an application engineer perspective
Reconciler
(render/reconciliation)
Renderer
(commit)
props state
vDOM
DOM (UI)
⏱Scheduling
🚀Priority
Computing power
Network speed
hotfix 😦
Computing power
Network speed
Time slicing 🥒
// component
componentDidMount () {
this.props.fetchData()
}
// redux
const fetchData =
state => state.merge({
isFetching: true
})
// saga
function * fetchData () {
yield call(api.fetchData)
// store data to redux
}
// component
render () {
isFetching
? renderSpinner()
: renderData()
}
// app.js
const App = () => (
<MovieList />
<MoviePage />
)
// moviePage.js
const MoviePage = () => (
<MovieDetails />
<MovieReviews />
)
<Placeholder
delayMs={1000}
fallback={<Spinner />}
>
<MoviePage>
</Placeholder>
const MoviePage = () => (
<>
<MovieDetails />
<MovieReviews />
</>
)
const MoviePage = () => (
<>
<MovieDetails />
<Placeholder
delayMs={2000}
>
<MovieReviews />
</Placeholder>
</>
)
const moviePageFetcher = createFetcher(
() => import('./MoviePage')
)
const MoviePageWhenNeeded = () => {
const MoviePage = moviePageFetcher.read()
return <MoviePage {...props} />
}
// app
const App = () => (
<MovieList />
<MoviePageWhenNeeded />
)
😈
Time slicing 🥒
Suspense 🛑
Computing power
Network speed
Async Rendering
$ git checkout -b development-fiber