Use Multiline JSX in a Component
import React from 'react';
import ReactDOM from 'react-dom';
class QuoteMaker extends React.Component {
render() {
return (
<blockquote>
<p>
The world is full of objects, more or less interesting; I do not wish to add any more.
</p>
<cite>
<a target="_blank"
href="http://bit.ly/1WGzM4G">
Douglas Huebler
</a>
</cite>
</blockquote>
);
}
};
ReactDOM.render(
<QuoteMaker />,
document.getElementById('app')
);
The return statement in <QuoteMaker /> class has a multiline JSX expression wrapped in ().
Use Variable Attribute in a Component
const redPanda = {
src: 'http://bit.ly/1U92LL3',
alt: 'Red Panda',
width: '200px'
};
class RedPanda extends React.Component {
render() {
return (
<div>
<h1>Cute Red Panda</h1>
<img
src={redPanda.src}
alt={redPanda.alt}
width={redPanda.width} />
</div>
);
}
}
ReactDOM.render(
<RedPanda />,
document.getElementById('app')
);
The <img /> tag's attributes src, alt and width are all injected {} with JavaScript from the redPanda object's properties.
Put Logic in a Render Function
class Random extends React.Component {
render() {
// First, some logic that must happen
// before rendering:
const n = Math.floor(Math.random()*10+1);
// Next, a return statement
// using that logic:
return <h1>The number is {n}!</h1>;
}
}
Use a Conditional in a Render Function
import React from 'react';
import ReactDOM from 'react-dom';
const fiftyFifty = Math.random() < 0.5;
class TonightsPlan extends React.Component {
render() {
if (fiftyFifty) {
return <h1>Tonight I'm going out WOOO</h1>;
} else {
return <h1>Tonight I'm going to bed WOOO</h1>;
}
}
}
ReactDOM.render(
<TonightsPlan />,
document.getElementById('app')
);
Use this in a Component
class IceCreamGuy extends React.Component {
get food() {
return 'ice cream';
}
render() {
return <h1>I like {this.food}.</h1>;
}
}
this refers to an instance of IceCreamGuy, this always refers to its enclosing object. this.food will evaluate to a call of IceCreamGuy's .food method, which evaluates to a string 'ice cream'.
No () is required for this.food since it's a _getter _method which is indicated with get keyword.
Use an Event Listener in a Component
An event handler is a function that gets called in response to an event: <div onHover={myFunc}>
render() {
return (
<div onHover={myFunc}>
</div>
);
}
In React, you define event handlers as methods in the component class. Like this:
class MyClass extends React.Component {
myFunc() {
alert('Stop it. Stop hovering.');
}
render() {
return (
<div onHover={this.myFunc}>
</div>;
);
}
}
MyClass component has two methods: myFunc() and .render(). .myFunc() is being used as the event handler. .myFunc() will be called any time that a user hovers over the rendered <div></div>.