It’s cool to see progressive enhancement being done even while using the fanciest of the fancy front-end technologies.
This is a button in a JSX React component that has a click handler applied directly to it that fires a data mutation Ajax request through Apollo GraphQL. That is about the least friendly environment for progressive enhancement I can imagine.
Kitty Giraudel writes that they do server-side rendering already, so the next tricky part is the click handler. Without JavaScript, the only mechanism we have for posting data is a <form>
, so that’s what they do. It submits to the /graphql
endpoint with the data it needs to perform the mutation via hidden inputs, plus additional data on where to redirect upon success or failure.
Pretty neat.