React Demo #2

Reusable component in action. These buttons are created from a ReactButton class that accepts text to display for both its unclicked and clicked states.

Note custom labels, provided by this demo application.

These aren't different buttons - they are different rendurings of the same button component with different inputs, held in a container with another passive spacer element.
It would be easy to morph this into an image zoomer with a + button and a - button, used to allow the reader to change image size. It could also become part of a connection component that accepted ip addresses, port numbers and listen and connect buttons.
Both of these more advanced components need to accept data from the application, e.g. the image and initial size for the first, and the ip addresses and port numbers for the second.
Here's a link to its: JavaScript code. You can see its HTML source by right-clicking and selecting "View Page Source".