React's `render` expects to consume a tree of element objects in a specific, uniform format. `createElement` is the method by which we achieve that objective. `createElement` will take as input JSM and output a tree of objects compatible with `render`.
React's `render` expects to consume a tree of element objects in a specific, uniform format. `createElement` is the method by which we achieve that objective. `createElement` will take as input JSM and output a tree of objects compatible with `render`.
@ -7,13 +7,13 @@ React expects nodes defined as JavaScript objects that look like this:
{format: "javascript"}
{format: "javascript"}
```
```
{
{
type: NODE_TYPE,
type: NODE_TYPE,
props: {
props: {
propA: VALUE,
propA: VALUE,
propB: VALUE,
propB: VALUE,
...
...
children: STRING | ARRAY
children: STRING | ARRAY
}
}
}
}
```
```
@ -22,26 +22,26 @@ That is: an object with two properties: `type` and `props`. The `props` property
{format: "javascript"}
{format: "javascript"}
```
```
function createElement(node) {
function createElement(node) {
// if array (not text, number, or other primitive)
// if array (not text, number, or other primitive)
`createElement`, however, takes as input something that is probably not familiar to us since we usually work in JSX, which is the last element of the chain in this puzzle and the first step in solving it. While not strictly a part of React, it is almost universally used with it. And if we understand it then `createElement` will be less of a mystery since we will be able to connect all the dots.
`createElement`, however, takes as input something that is probably not familiar to us since we usually work in JSX, which is the last element of the chain in this puzzle and the first step in solving it. While not strictly a part of React, it is almost universally used with it. And if we understand it then `createElement` will be less of a mystery since we will be able to connect all the dots.
@ -13,8 +13,8 @@ To start with, we need to create a data-structure -- let's call it JavaScript Ma