React

March 20, 2022

Grab recent copies of React and Axios:

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.0.0-rc.3-next-3f8990898-20220323/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.0.0-rc.3-next-3f8990898-20220323/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.26.1/axios.min.js"></script>

Add an element to hold the rendered view:

<div id="app"></div>

Grab the model from a JSON API and render the view from a template:

<script type="text/javascript">
  class App extends React.Component {
    constructor(props) {
      super(props);
      this.state = props;
    }
    render() {
      return React.createElement(
        'table', 
        null,
        [
          React.createElement('tr', null, [
            React.createElement('th', null, 'Name:'),
            React.createElement('td', null, this.state.name),
          ]),
          React.createElement('tr', null, [
            React.createElement('th', null, 'Handle:'),
            React.createElement('td', null, this.state.nick),
          ]),
          React.createElement('tr', null, [
            React.createElement('th', null, 'Email:'),
            React.createElement('td', null, [
              React.createElement('a', { href: this.state.mbox, }, this.state.mbox),
            ]),
          ]),
          React.createElement('tr', null, [
            React.createElement('th', null, 'Website:'),
            React.createElement('td', null, [
              React.createElement('a', { href: this.state.homepage, }, this.state.homepage),
            ]),
          ]),
          React.createElement('tr', null, [
            React.createElement('th', null, 'Depiction:'),
            React.createElement('td', null, [
              React.createElement('img', { class: 'thumbnail', src: this.state.depiction, }),
            ]),
          ]),
        ]
      );
    }
  }

  axios
    .get('/james.json')
    .then(function (response) {
      ReactDOM.render(
        React.createElement(App, response.data),
        document.querySelector('#app')
      );
    })
    .catch(function (error) {
      console.error(error.message);
    });
</script>

Demo