Browse Source

Add IIFE example to JSX documentation

main
Luke Horvat 10 years ago
parent
commit
c6fe815d65
  1. 32
      tips/03-if-else-in-JSX.md

32
tips/03-if-else-in-JSX.md

@ -33,8 +33,7 @@ That's not valid JS. You probably want to make use of a ternary expression:
React.render(<div id={condition ? 'msg' : ''}>Hello World!</div>, mountNode); React.render(<div id={condition ? 'msg' : ''}>Hello World!</div>, mountNode);
``` ```
If a ternary expression isn't robust enough, you can use `if` statements to determine which If a ternary expression isn't robust enough, you can use `if` statements outside of your JSX to determine which components should be used:
components should be used.
```js ```js
var loginButton; var loginButton;
@ -49,7 +48,34 @@ return (
<Home /> <Home />
{loginButton} {loginButton}
</nav> </nav>
) );
``` ```
Or if you prefer a more "inline" aesthetic, define [immediately-invoked function expressions](https://en.wikipedia.org/wiki/Immediately-invoked_function_expression) _inside_ your JSX:
```js
return (
<section>
<h1>Color</h1>
<h3>Name</h3>
<p>{this.state.color || "white"}</p>
<h3>Hex</h3>
<p>
{() => {
switch (this.state.color) {
case "red": return "#FF0000";
case "green": return "#00FF00";
case "blue": return "#0000FF";
default: return "#FFFFFF";
}
}()}
</p>
</section>
);
```
> Note:
>
> In the example above, an ES6 [arrow function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) is utilized to lexically bind the value of `this`.
Try using it today with the [JSX compiler](/react/jsx-compiler.html). Try using it today with the [JSX compiler](/react/jsx-compiler.html).

Loading…
Cancel
Save