Yep, that's one great way to do it. But let's think of how we'd do it with only React.

First, let's add the additional requirement that the initial page load needs to show the products (i.e. no extra AJAX call on first load). This makes the example more complex / educational.

The new minimal set of state now includes the *current set of products* (`currentProducts`), since this could change over time.

For the initial load we want to initialize `currentProducts` to the JSON that the server sent down with the page. So we change the `products` prop to be called `initialProducts` and copy it into state in `getInitialState()` (i.e. `return {currentProducts: this.props.initialProducts}`)

Then we can use React's lifecycle hooks (somewhat outside the scope of this post) to start a `setInterval()` that polls the server. When the server comes back with new data, just do `this.setState({currentProducts: responseFromServer})`.

Make sense? Great feedback, thanks.