|
1 | 1 | import * as React from 'react'; |
2 | 2 |
|
3 | | -import { useMqtt, useSubscribe } from '../../../dist'; |
| 3 | +import { useMqtt, useSubscribe, useUnsubscribe } from '../../../dist'; |
4 | 4 | import { processTopic, actorTopic } from './constants'; |
5 | 5 |
|
| 6 | +const topics = [processTopic, actorTopic]; |
| 7 | + |
6 | 8 | export const Child: React.FC = () => { |
7 | 9 | const { status, error } = useMqtt(); |
8 | 10 | const subscribe = useSubscribe(); |
| 11 | + const unsubscribe = useUnsubscribe(); |
| 12 | + |
| 13 | + const handleSubscribe = React.useCallback(() => { |
| 14 | + if (status === 'connected') subscribe(topics); |
| 15 | + }, [status, subscribe]); |
9 | 16 |
|
10 | | - React.useEffect(() => { |
11 | | - if (status === 'connected') subscribe([processTopic, actorTopic]); |
12 | | - }, [subscribe, status]); |
| 17 | + const handleUnsubscribe = React.useCallback(() => { |
| 18 | + if (status === 'connected') unsubscribe(topics); |
| 19 | + }, [status, unsubscribe]); |
13 | 20 |
|
14 | 21 | return ( |
15 | 22 | <main> |
16 | 23 | <h1>This is a basic example</h1> |
| 24 | + <h2>Topics</h2> |
| 25 | + <p>{topics.join(', ')}</p> |
| 26 | + <button type="button" onClick={handleSubscribe}> |
| 27 | + Inscrever-se nos tópicos |
| 28 | + </button> |
| 29 | + <button type="button" onClick={handleUnsubscribe}> |
| 30 | + Desinscrever-se dos tópicos |
| 31 | + </button> |
17 | 32 | <p> |
18 | 33 | <b>Mqtt status: </b> |
19 | 34 | {status} |
|
0 commit comments