diff --git a/docs/docs/refactor/00-table-of-contents.md b/docs/docs/refactor/00-table-of-contents.md
index a1a05c1f7f..7633064b56 100644
--- a/docs/docs/refactor/00-table-of-contents.md
+++ b/docs/docs/refactor/00-table-of-contents.md
@@ -19,7 +19,7 @@ Displaying data
- Components are just functions
- JSX syntax (link to separate doc?)
-Handling user input
+Interactivity and dynamic UIs
- Click handler example
- Event handlers / synthetic events (link to w3c docs)
- Under the hood: autoBind and event delegation (IE8 notes)
@@ -32,22 +32,25 @@ Scaling up: using multiple components
- Motivation: separate concerns
- Composition example
- Ownership (and owner vs. parent)
+- Children
- Data flow (one-way data binding)
- A note on performance
+
+Building effective reusable components
- You should build a reusable component library (CSS, testing etc)
- Prop validation
+- Transferring props: a shortcut
- Mixins
- Testing
Forms
-- TODO list example
-- How to think about Reactive forms
-- New form events and properties
Working with the browser
+- The mock DOM
- Refs / getDOMNode()
+- More about refs
- Component lifecycle
-- Polyfills
+- Browser support and polyfills
Integrating with other UI libraries
- Using jQuery plugins
@@ -78,3 +81,4 @@ Reference
- API
- DOM differences
- JSX gotchas
+- Antipatterns
diff --git a/docs/docs/refactor/02-displaying-data.md b/docs/docs/refactor/02-displaying-data.md
index 14c6ca174c..ae80882286 100644
--- a/docs/docs/refactor/02-displaying-data.md
+++ b/docs/docs/refactor/02-displaying-data.md
@@ -53,6 +53,8 @@ setInterval(function() {
View the finished code in a web browser and type your name into the text field. Notice that React is only changing the time string in the UI -- any input you put in the text field remains, even though you haven't written any code to manage this behavior. React figures it out for you and does the right thing.
+The way it is able to figure this out is that React does not directly manipulate the DOM, **it uses a fast, internal mock DOM to perform diffs and computes the most efficient DOM mutation for you.**
+
The inputs to this component are called `props` -- short for "properties". They're passed as attributes in JSX syntax. You should think of these as immutable within the component, that is, **never write to this.props**.
## Components are just like functions
diff --git a/docs/docs/refactor/03-handling-user-input.md b/docs/docs/refactor/03-interactivity-and-dynamic-uis.md
similarity index 94%
rename from docs/docs/refactor/03-handling-user-input.md
rename to docs/docs/refactor/03-interactivity-and-dynamic-uis.md
index 030a15a762..f29752f168 100644
--- a/docs/docs/refactor/03-handling-user-input.md
+++ b/docs/docs/refactor/03-interactivity-and-dynamic-uis.md
@@ -1,4 +1,4 @@
-# Handling User Input
+# Interactivity and dynamic UIs
You've already [learned how to display data](./02-displaying-data.html) with React. Now let's look at how to make our UIs interactive.
@@ -34,6 +34,8 @@ React.renderComponent(
With React you simply pass your event handler as a camelCased prop similar to how you'd do it in normal HTML. React ensures that all events behave identically in IE8 and above by implementing a synthetic event system. That is, React knows how to bubble and capture events according to the spec, and the events passed to your event handler are guaranteed to be consistent with [the W3C spec](http://www.w3.org/TR/DOM-Level-3-Events/), regardless of which browser you're using.
+**If you'd like to use React on a touch device** (i.e. a phone or tablet), simply call `React.initializeTouchEvents(true);` to turn them on.
+
## Under the hood: autoBind and event delegation
Under the hood React does a few things to keep your code performant and easy to understand.
@@ -62,4 +64,4 @@ A common pattern is to create several stateless components that just render data
## What should go in state?
-**`this.state` should contain any data that the component's event handlers will change that should trigger a UI update.** In real apps this data tends to be very small and JSON-serializable. When building a stateful component, think about the minimal possible representation of its state, and only store those properties in `this.state`. Inside of `render()` simply compute any other information you need based on this state. You'll find that thinking about and writing applications in this way tends to lead to the most correct application, since adding redundant or computed values to state means that you need to explicitly keep them in sync rather than rely on React computing them for you.
\ No newline at end of file
+**`this.state` should contain any data that the component's event handlers will change that should trigger a UI update.** In real apps this data tends to be very small and JSON-serializable. When building a stateful component, think about the minimal possible representation of its state, and only store those properties in `this.state`. Inside of `render()` simply compute any other information you need based on this state. You'll find that thinking about and writing applications in this way tends to lead to the most correct application, since adding redundant or computed values to state means that you need to explicitly keep them in sync rather than rely on React computing them for you.
diff --git a/docs/docs/refactor/04-scaling-up.md b/docs/docs/refactor/04-scaling-up.md
index 6fe5f7b511..209ce4c45b 100644
--- a/docs/docs/refactor/04-scaling-up.md
+++ b/docs/docs/refactor/04-scaling-up.md
@@ -54,6 +54,63 @@ In the above example, instances of `Avatar` *own* instances of `ProfilePic` and
It's important to draw a distinciton between the owner-ownee relationship and the parent-child relationship. The owner-ownee relationship is specific to React, while the parent-child relationship is simply the one you know and love from the DOM. In the example above, `Avatar` owns the `div`, `ProfilePic` and `ProfileLink` instances, and `div` is the **parent** (but not owner) of the `ProfilePic` and `ProfileLink` instances.
+## Children
+
+When you create a React component instance, you can include additional React components or JavaScript expressions between the opening and closing tags like this:
+
+```javascript
+ Paragraph 1 Paragraph 2 Paragraph 2
Paragraph 1
` was removed. Instead, React will reconcile the DOM by changing the text content of the first child and destroying the last child. React reconciles according to the *order* of the children. + +### Stateful Children + +For most components, this is not a big deal. However, for stateful components that maintain data in `this.state` across render passes, this can be very problematic. + +In most cases, this can be sidestepped by hiding elements instead of destroying them: + +```html +// Render Pass 1 +Paragraph 1
Paragraph 2
Paragraph 1
Paragraph 2
+ React has been running for {this.state.seconds} seconds. +
+ ); + } +}); + +React.renderComponent( +