Mentor's Notes - React 1
Resources
Solutions
Notes for mentors
- Components - talk about the conceptual idea components, not just React components
- E.g. bootstrap components
- Why React?
- Updating the DOM is potentially buggy, verbose, slow
- In complex web apps (like Facebook), updating the DOM is common
- React solves a lot of those problems
- Thinking in React exercise - useful to print out the screenshot, so they can draw on it
- Rendering in React section
- Build towards component usage from vanilla DOM
- This hopefully reduces the "magic" that React is
- Although don't spend too much time on it - the student's don't know about other frameworks, and so don't really care about other approaches
- Also useful to identify why the React api is improved over the vanilla DOM apis
- JSX section
- Open the Babel REPL - demonstrate that there isn't any magic in JSX
- Just React.createElement calls with syntax sugar
- Installing Create-React-App
- This should be set as homework ahead of the lesson
- Saves time waiting for everyone to install
- Also saves CPU cycles on slower computers, which may affect video calls
- CRA can consume a lot of resources (especially on older laptops) so emphasize stopping/starting
- This is the first time that students will have encountered a file watcher/daemon background process
- So take some time to demonstrate how to start and stop the app
- Recommend that students with slower computers stop the app when they are not using it
- Installing
stop-runaway-react-effects
- A package to prevent accidental infinite
useEffect
loops
- It must be imported before the
react
import so that useEffect
can be monkey-patched
- Package docs
- React components section
- Originally this was written with class components first
- However, students went home and googled and saw alternative syntaxes
- This is a common theme in this first lesson - have to teach some stuff that is perhaps unnecessary just so that they're prepared when they see it at home
- Making an argument for props section - Relate to a situation in real life, something like: imagine what our boss might ask for with this small application. What could our boss ask for which would mean we would have to make changes to the code?
- Exercises
- Written to be quite step-by-step deliberately
- Some students were distracted by the wording and not getting to the useful part of the exercise
- This is a tricky balance though - now some students will be distracted by the wordy-ness of the exercises. Feedback welcome
- Exercises in lessons 2 & 3 depend on the completing the exercises in lesson 1
- So ensure students have completed most of them before moving on
- We may want to introduce a way of "catching them up" - have tagged "checkpoints" on a git repo?
- Interactive examples
- All of the examples should have an associated CodeSandbox with identical code
- This is so that you can change the example to help demonstrate if necessary
- I have found this very useful in the past, especially when answering questions like "what happens if you do X?"
- You can type up exactly what they're asking about and demo it
- Props section
- Makes a common analogy of "props as arguments" to a function
- Students often get tripped on up on the
props
argument to a functional component
- They tend to forget to add it to the function signature
- Or they think that each prop is given as a separate argument
- The first class may be a little short. But not short enough to start getting into state
- If you have extra time, PropTypes/defaultProps might be worth covering
- There is a Further Reading section at the very end of lesson 2 about this
Interactive Example Index
Exercise solutions