Fetching data
We're getting close to having a fully functional end-to-end rendering solution for our React application. The last remaining issue is state, more specifically, data that comes from some API endpoint. Our components need to be able to fetch this data on the server just as they would on the client so that they can generate the appropriate content. We also have to pass the initial state, along with the initial rendered content, to the browser. Otherwise, our code won't know when something has changed after the first render.
To implement this, I'm going to introduce the Flux concept for holding state. Flux is a huge topic that goes well beyond the scope of this book. Just know this: a store is something that holds application state and, when it's changed, React components are notified. Let's implement a basic store before we do anything else:
import EventEmitter from 'events'; import { fromJS } from 'immutable'; // A store is a simple state container that ...