diff --git a/cookbook/cb-03-if-else-in-JSX tip.md b/cookbook/cb-03-if-else-in-JSX tip.md new file mode 100644 index 00000000..6cee70bc --- /dev/null +++ b/cookbook/cb-03-if-else-in-JSX tip.md @@ -0,0 +1,31 @@ +--- +id: if-else-in-JSX-tip +title: If-Else in JSX +layout: docs +permalink: inline-styles.html +script: "cookbook/inline-styles.js" +--- + +`if-else` statements don't work inside JSX, since JSX is really just sugar for functions: + +```html +/** @jsx React.DOM */ + +// this +React.renderComponent(
Hello World!
, mountNode); +// is the same as this +React.renderComponent(React.DOM.div({id:"msg"}, "Hello World!"), mountNode); +``` + +Which means `
Hello World!
` doesn't make sense, as (if it worked) it would be compiled down to something like this `React.DOM.div({id: if (true){ 'msg' }}, "Hello World!")`, which isn't valid JS. + +What you're searching for is ternary expression: + +```html +/** @jsx React.DOM */ + +// this +React.renderComponent(
Hello World!
, mountNode); +``` + +Try the [JSX compiler](http://facebook.github.io/react/jsx-compiler.html) to see how this works. It's a very simple transformation, thus making JSX entirely optional to use with React. diff --git a/cookbook/cb-03-if-else-in-JSX.md b/cookbook/cb-03-if-else-in-JSX.md new file mode 100644 index 00000000..ac617c36 --- /dev/null +++ b/cookbook/cb-03-if-else-in-JSX.md @@ -0,0 +1,36 @@ +--- +id: if-else-in-JSX +title: If-Else in JSX +layout: docs +permalink: inline-styles.html +script: "cookbook/inline-styles.js" +--- + +### Problem +You want to use conditional in JSX. + +### Solution +Don't forget that JSX is really just sugar for functions: + +```html +/** @jsx React.DOM */ + +// this +React.renderComponent(
Hello World!
, mountNode); +// is the same as this +React.renderComponent(React.DOM.div({id:"msg"}, "Hello World!"), mountNode); +``` + +Which means `
Hello World!
` doesn't make sense, as (if it worked) it would be compiled down to something like this `React.DOM.div({id: if (true){ 'msg' }}, "Hello World!")`, which isn't valid JS. + +What you're searching for is ternary expression: + +```html +/** @jsx React.DOM */ + +// this +React.renderComponent(
Hello World!
, mountNode); +``` + +### Discussion +Try the [JSX compiler](http://facebook.github.io/react/jsx-compiler.html) to see how this works. It's a very simple transformation, thus making JSX entirely optional to use with React.