Back to work
"That's good to start, Shawn. Let's move back to the task of building our app using Open Library's Recent changes API now. We already have a basic prototype ready without using ReactJS."
"We will be slowly replacing parts of it using ReactJS."
"This is how the information is displayed right now, using server-side logic, as follows:"
"First task that we have is to display the information retrieved from the Open Library Recent Changes API in a table using ReactJS similar to how it's displayed right now using server-side."
"We will be fetching the data from the Open Library API similar to the following:"
var data = [{ "when": "2 minutes ago", "who": "Jill Dupre", "description": "Created new account" }, { "when": "1 hour ago", "who": "Lose White", "description": "Added fist chapter" }, { "when": "2 hours ago", "who": "Jordan Whash", "description": "Created new account" }];
"Let's use this to prototype our app for now. Before that, let's take a look at the simple HTML version of this app. In our React.render
method, we start returning a table element, as follows:"
var App = React.createClass({ render: function(){ return <table> <thead> <th>When</th> <th>Who</th> <th>Description</th> </thead> <tr> <td>2 minutes ago</td> <td>Jill Dupre</td> <td>Created new account</td> </tr> <tr> <td>1 hour ago</td> <td>Lose White</td> <td>Added fist chapter</td> </tr> <tr> <td>2 hours ago</td> <td>Jordan Whash</td> <td>Created new account</td> </tr> </table> } });
"This should start displaying our table with three rows. Now, go ahead and add a heading at top of this table from the React App
, as follows:"
… return <h1>Recent Changes</h1> <table> …. </table> …
"There, something like that?" asked Shawn. "Oh, that didn't work."
"That's because React expends our render method to always return a single HTML element. In this case, after you added the h1
heading, our app started returning two elements, which is wrong. There'll be many cases when you will come across this. To avoid this, just wrap the elements in a div
or span
tag. The main idea is that we just want to return a single element from the render method."
"Got it. Something like this?"
… return <div> <h1>Recent Changes</h1> <table> …. </table> </div> …