# Six Weeks of React
Six week collaborative learning course in React JS

# Syllabus

## Week 0 - Introduction, JSX, and Virtual DOM
*  What is React JS and what problems does it solve?
*  How does the virtual DOM work?
*  Compiled vs. in-browser JSX transformation
*  JSX conditionals
*  Hello World

### Week 0 Exercises

## Week 1 - Components
* Component Properties
*  Component specification methods
  *  render()
  *  getInitialState()
  *  getDefaultProps()
  *  propTypes
  *  mixins
  *  statics
  *  displayName
*  Lifecycle Methods
  *  Mounting
    *  componentWillMount
    *  componentDidMount
  *  Updating
    *  componentWillReceiveProps
    *  shouldComponentUpdate
    *  componentWillUpdate
    *  componentDidUpdate
    *  componentWillUnmount
*  Data Model
*  Component State

## Week 2 - Event Handling, Forms, and Validation
*  State in components
*  Autobinding
*  Event Delegation

## Week 3 - Advanced and Reusable Components
*  Modularity and Separation of Responsibilities
*  Ownership
*  Children
*  Namespaced components

## Week 4 - CSS in React

## Week 5 - Putting it all together

# Six Weeks of React
Six week collaborative learning course in React JS

# Syllabus

## Week 0 - Introduction, JSX, and Virtual DOM
*  What is React JS and what problems does it solve?
*  How does the virtual DOM work?
*  Compiled vs. in-browser JSX transformation
*  JSX conditionals
*  Hello World

### Week 0 Exercises

## Week 1 - Components
* Component Properties
*  Component specification methods
  *  render()
  *  getInitialState()
  *  getDefaultProps()
  *  propTypes
  *  mixins
  *  statics
  *  displayName
*  Lifecycle Methods
  *  Mounting
    *  componentWillMount
    *  componentDidMount
  *  Updating
    *  componentWillReceiveProps
    *  shouldComponentUpdate
    *  componentWillUpdate
    *  componentDidUpdate
    *  componentWillUnmount
*  Data Model
*  Component State

## Week 2 - Event Handling, Forms, and Validation
*  State in components
*  Autobinding
*  Event Delegation

## Week 3 - Advanced and Reusable Components
*  Modularity and Separation of Responsibilities
*  Ownership
*  Children
*  Namespaced components

## Week 4 - CSS in React
* Failures of traditional CSS
  * Globals and Namespacing
  * Dependencies
  * Dead Code Elimination
  * Minification
  * Sharing Constants
  * Non-detrministic resolution
  * Isolation
* CSS in JS
  * CamelCase conversion
  * Automatically add 'px'
  * Replace commas with semicolons
* Inline styles
  * 'style' vs 'class'
* Conditionals
* Limitations


## Week 5 - Putting it all together

Build out Week 4 CSS framework
Build out Week 4 CSS framework
