Skip to content

luminos-software/react-native-actioncable

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ActionCable for react native.

Just import actioncable module, and let it compatiblely with react native.

Install

npm install --save react-native-actioncable

Usage

Two ways to use react-native-actioncable

Use ActionCable methods

import ActionCable from 'react-native-actioncable'

const cable = ActionCable.createConsumer('ws://localhost:3000/cable')

// ... Other code
cable.subscriptions.create('ChatChannel', {
    received(data) {
        console.log('Received data:', data)
    }
})

Use with react-actioncable-provider

In outer container:

import ActionCable from 'react-native-actioncable'
import ActionCableProvider from 'react-actioncable-provider'

const cable = ActionCable.createConsumer('ws://localhost:3000/cable')

export default function Container (props) {
    return (
        <ActionCableProvider cable={cable}>
            <MyApp />
        </ActionCableProvider>
    )
}

And then you can get cable object from react component's context, or you can use ActionCableProvider.ActionCable component.

Use in some UI screen directly:

import React, { Component, PropTypes } from 'react'

export default class ChatRoom extends Component {
    static contextTypes = {
        cable: PropTypes.object.isRequired
    };

    componentDidMount () {
        this.subscription = this.context.cable.subscriptions.create(
            'ChatChannel',
            {
                received (data) {
                    console.log(data)
                }
            }
        )
    }

    componentWillUnmount () {
        this.subscription &&
            this.context.cable.subscriptions.remove(this.subscription)
    }

    // ... Other code
}

Or you can use with ActionCable component (Not react-native-actioncable)

import React, { Component, PropTypes } from 'react'
import { ActionCable } from 'react-actioncable-provider'

export default class ChatRoom extends Component {
    onReceived = (data) => {
        console.log('Received data:', data)
    }

    render() {
        return (
            <View>
                <ActionCable channel={{channel: 'ChatChannel'}} onReceived={this.onReceived} />
                {/* other code */}
            </View>
        )
    }
}

Full Example

https://github.com/cpunion/TestRNActionCable

About

ActionCable for react native

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%