import { Split } from 'mdx-deck/layouts' import { Appear, Image, Notes } from 'mdx-deck'; import { CodeSurfer } from 'mdx-deck-code-surfer'; export { default as theme } from './theme';
- Fragments
- Portals
- React.createRef() API
- Error boundaries
- Context API
- Profiler
- Lifecycle hook changes
- Fiber
<CodeSurfer title="Strings" code={require("!raw-loader!./snippets/Strings.jsx")} lang="javascript" showNumbers={false} dark={true} />
<CodeSurfer title="Arrays" code={require("!raw-loader!./snippets/Arrays.jsx")} lang="javascript" showNumbers={false} dark={true} />
<CodeSurfer title="Fragment Component" code={require("!raw-loader!./snippets/FragmentComponent.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { lines: [3,7]} ]} />
<CodeSurfer title="Fragment Syntax" code={require("!raw-loader!./snippets/FragmentSyntax.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { lines: [3,7]} ]} />
<CodeSurfer title="Portals" code={require("!raw-loader!./snippets/Portal.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { lines: [4] }, { range: [8, 11] }, ]} />
<CodeSurfer title="String ref (deprecated)" code={require("!raw-loader!./snippets/CreateRefString.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { tokens: { 4: [5, 6, 7] }} ]} />
<CodeSurfer title="Callback ref (still fine)" code={require("!raw-loader!./snippets/CallbackRef.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { lines: [6] }, ]} />
<CodeSurfer title="Object ref" code={require("!raw-loader!./snippets/CreateRefAPI.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { lines: [3, 9] }, ]} />
<CodeSurfer title="Error boundaries" code={require("!raw-loader!./snippets/ErrorBoundary.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { range: [4, 7] }, { range: [10, 12] }, ]} />
<CodeSurfer title="Context API" code={require("!raw-loader!./snippets/ContextAPI.jsx")} lang="javascript" showNumbers={false} dark={true} steps={[ { lines: [1] }, { range: [3, 11] }, { range: [13, 19] }, { range: [21, 27] }, ]} />
- componentWillMount
- componentWillReceiveProps
- componentWillUpdate
- UNSAFE_componentWillMount
- UNSAFE_componentWillReceiveProps
- UNSAFE_componentWillUpdate
- getDerivedStateFromProps
- getSnapshotBeforeUpdate
- Slow and fast CPUs (mobile vs desktop)
- Slow and fast networks
https://www.youtube.com/watch?v=nLF0n9SACd4
Generic way for components to prevent low priority updates blocking high priority updates.
https://build-mbfootjxoo.now.sh/
Interactivity by Philip Walton
Generic way for components to suspend rendering while they wait for something to happen.
Addressing the issues identified by strict mode now will make it easier for you to take advantage of async rendering in future releases of React.
- Identifying components with unsafe lifecycles
- Warning about legacy string ref API usage
- Detecting unexpected side effects
- Detecting legacy context API
<CodeSurfer title="Enabling strict mode (dev only)" code={require("!raw-loader!./snippets/StrictMode.jsx")} lang="javascript" showNumbers={false} dark={true} />
https://github.com/sw-yx/fresh-async-react