Rendering imperative components
Everything you've rendered so far in this book has been straightforward declarative HTML. As you know, life is never so simple: sometimes our React components need to implement some imperative code under the covers.
This is the key—hiding the imperative operations so that the code that renders your component doesn't have to touch it. In this section, you'll implement a simple jQuery UI button React component so that you can see how the relevant lifecycle methods help us encapsulate imperative code.
Rendering jQuery UI widgets
The jQuery UI widget library implements several widgets on top of standard HTML. It uses a progressive enhancement technique whereby the basic HTML is enhanced in browsers that support newer features. To make these widgets work, you first need to render HTML into the DOM somehow; then, make imperative function calls to create and interact with the widgets.
In this example, we'll create a React button component that acts as a wrapper around...