rsnext/examples/with-stomp/useStomp.js
Joe Haddad 18a9c7e371
Improve linting rules to catch more errors (#9374)
* Update `packages/`

* Update examples

* Update tests

* Update bench

* Update top level files

* Fix build

* trigger
2019-11-10 19:24:53 -08:00

29 lines
675 B
JavaScript

import { useState, useEffect, useCallback } from 'react'
import useClient from './useClient'
const useStomp = topic => {
const [message, setMessage] = useState({})
const client = useClient()
// subscribe to a channel, then listen to the messages.
const subscribe = useCallback(() => {
client.subscribe(topic, msg => {
const change = JSON.parse(msg.body)
setMessage(change)
})
}, [client, topic])
// unsubscribe on unmount
const unSubscribe = useCallback(() => {
client.unsubscribe()
}, [client])
useEffect(() => {
subscribe()
return unSubscribe
}, [subscribe, unSubscribe])
return message
}
export default useStomp