React Fundamentals Welcome
- Change the
 elementfromdiv#roottop#greeting
- To create a div DOM node with the text “Hello World” and insert that DOM node into the document.
 - (In our HTML document,) add a 
<body>tag with a<div>inside of it. - Add the 
id"root". - We can test at this stage by adding some text.
 - (Below this 
<div>,) add a<script>tag that istype="module".- (Note that everything in this tag is JavaScript)
 
 - (In our 
<script>,)- Create a div element.
 - Assign it’s reference to the variable 
element - (Use that reference to) set 
textContent. - (To make sure we got this far, we can 
alert(element.textContent)) - Perfect.
 - Now set the 
element’sclassNametocontainer 
 - (With our new 
"Hellow World"Let’s append our new"Hello World"element to our"root"div and append ourHello Worldelement to it.- Query the dom for the 
div#root - Store a reference to that element in the varible 
element. - Use that reference to append the “Hello World” div 
element 
 - Query the dom for the 
 
<body>  <div id="root"></div>  <script type="module">    const element = document.createElement('div')    element.textContent = 'Hello World'    element.className = 'container'
    const rootElement = document.getElementById('root')    rootElement.append(element)  </script></body>- Let’s step back and look at what we’ve done.
 - We have an HTML Document which we added 3 tags to: 
body,div, andscript. - We have our 
divan idrootso we could easily access it via JavaScript — later. - In our script we used DOM APIs to:
- Create an element
 - We assigned text and a className to it
 - And append it to our 
div#rootelement 
 - You can learn a lot more about the browser’s DOM APIs at MDN, a great resource for all web and JavaScript knowledge
 
Extra Credit
- To create the root element in the script section,
 - Delete the 
<div id="root">HTML tag - (Because 
div#rootno longer exists,) Change therootElementfromgetElementById("root")todocument.createElement("div") - Use the 
setAttributemethod to setidtoroot. - The append stays the same.
 - Be sure to remember that 
createElement,getElementById,setAttribute, andappendare all part of the browser’s DOM API. The best place to learn more about browser DOM APIs on MDN. 
<body>  <script type="module">    const element = document.createElement("div");    element.textContent = "Hello World";    element.className = "container";
    const rootElement = document.getElementById("root");    const rootElement = document.createElement('div')    rootElement.setAttribute('id', 'root')
    rootElement.append(element);  </script></body>Ideas from
- 
- Raw React & JSX
 
- Recommended VS Code / DevTools Extensions
- Tools and how to use them
 - Keyboard shortcuts & scripts
 
 - How you organize your screens when developing
- Editor, browser preview, terminal, etc.
 
 - Compare raw DOM manipulation vs. React
 - Comparing createRoot() and render()
 - JSX children strings vs. elements
 - Interpolation tricks
 - When to spread props vs. pass individually
 - Naming conventions and when to use them
 - Philosophy of using props vs. composing children
 
 - 
- Styling & Forms
 
- Common gotchas that affect performance
 - Assigning types to props with TypeScript
 - When to use fragments or not
 
 - 
- Rendering Arrays
 
- Importance of the key prop when rendering lists
 - Resetting component stat by changing keys
 - Fixing “Uncontrolled input to controlled” error
- Controlled input values managed by React state, Uncontrolled by DOM state
 - Show how error occurs when value changes from undefined
 - Explain how to decide when to use which
 
 
 - 
- useState and useEffect Hooks
 
- Watch Local Storage for changes
 - To useMemo or not to useMemo?
- Examples of when to use a different hook instead
 
 
 - 
- Tic-Tac-Toe part 1
 
- Quick refactor a class component to hooks
 
 - 
- Tic-Tac-Toe part 2
 
 - 
- useRef and useEffect
 
- Example of useRef
- Tracking mount state or storing references to DOM elements
 - (Different example than vanilla-tilt)
 
 - Using useEffect for an HTTP Request
 - Handling an async callback
 
 - 
- Error Boundaries
 
- What is an Error Boundary?
- Include error reseting
 
 
 - 
- useReducer & useCallback
 
- Comparing useLayoutEffect to useEffect / other hooks
 
 - 
- useReducer
 
- Redux-style useReducer
 - Other uses for useReducer
 
 - 
- Context
 
- Context & useContext vs. Redux style useReducer
 
 - 
- Advanced Context
 
- What makes a component future proof?
 
 - 
- Flexible Compound Components
 
- Handling error bubbling effectively