appfairy-reactdeprecated

A patch on top of React for Appfairy/React apps

Usage no npm install needed!

<script type="module">
  import appfairyReact from 'https://cdn.skypack.dev/appfairy-react';
</script>

README

Appfairy-React

A patch on top of React for Appfairy/React apps.

With React

import Appfairy from 'appfairy'
import ReactDom from 'react-dom'
import React from 'react'

class MyComponent extends React.Component {
  button = React.createRef()

  render() {
    return (
      <af-my-element-view>
        <af-proxy
          af-plug="button"
          ref={this.button}
          history={new Appfairy.Reference(this.props.history)}
          onClick={this.handleClick}
        />
      </af-my-element-view>
    )
  }

  handleClick = (e) => {
    e.nativeEvent.origin.preventDefault()

    console.log(this.button.current.afSocket, 'clicked')
  }
}

class MyElement extends Appfairy.Element(HTMLElement) {
  render(container, props) {
    return ReactDOM.render(
      <MyComponent {...props} />
    , container)
  }
}

Appfairy.Element.define('my-element', Element)

With Appfairy-React

import React from 'appfairy-react'

@React.Element('my-element')
class MyComponent extends React.Component {
  button = React.createRef()

  render() {
    return (
      <af-my-element-view>
        <af-proxy
          af-plug="button"
          ref={this.button}
          history={this.props.history}
          onClick={this.handleClick}
        />
      </af-my-element-view>
    )
  }

  handleClick = (e) => {
    e.nativeEvent.preventDefault()

    console.log(this.button.current, 'clicked')
  }
}

patch()

Rather than import appfairy-react all the time, you can just use the patch() method and then use react as usual:

// main module
import AppfairyReact from 'appfairy-react'

AppfairyReact.patch()

// any other module which uses jsx
import React from 'react'