   with an edn map as the first argument. That map is accessed using `om/props` on `this` within the subcomponent. Data
   is passed from component to component through `props`.
 
+  ### Don't forget the React DOM Key!
+
   You might notice something new here: the `om/factory` function is supplied with an additional map `{:keyfn :name}`.
   The factory function can be optionally supplied with two keywords: `:keyfn` and `:validator`. `:keyfn` produces the
   <a href=\"https://facebook.github.io/react/docs/multiple-components.html\" target=\"_blank\">React key property</a>
   from component props (here it's `:name`), while `:validator`takes a function that asserts the validity of the props received.
+
+  The key is critical, as it helps React figure out the DOM diff. If you see warning about elements missing
+  keys (or having the same key) it means you have adjacent elements in the DOM of the same type, and React cannot
+  figure out what to do to make sure they are properly updated.
 
   ## Play With It
 

  "
  (dc/mkdn-pprint-source WidgetWithHook)
  "
  ## Element factory

  In order to render components on the screen you need an element factory.

(defcard-doc
  "

  The things to note for this stateful example are:

  - We override the React lifecycle method `shouldComponentUpdate` to do the actual D3 update, and then return false.
  This ensures React and D3 don't fight over the DOM for the component (since we're asking React to never change
  it).
  - We also override `componentDidMount` to do an initial render in D3.
  - Note: As of Om 1.0.0 Alpha 30 the method of obtaining the properties differs a bit, as shown. This may have
  changed since this writing. If the example is failing please check the docs and report a bug.

  ## Important Notes and Further Reading

  - Remember to use `#js` (shown as `clj->js` in many examples) to transform attribute maps for passing to DOM elements
  - Use *cljs* maps as input to your own Elements: `(my-ui-thing {:a 1})` and `(dom/div #js { :data-x 1 } ...)`.
  - Extract properties with `om/props`. This is the same for stateful (with queries) or stateless components.
  - Add parent-generated things (like callbacks) using `om/computed` and pull them from the component with
    `(om/get-computed)`.


  You may do additional [UI exercises](#!/untangled_tutorial.B_UI_Exercises), or continue on to the
  [next chapter](#!/untangled_tutorial.C_App_Database) on the client database.
  ")
