Untitled
unknown
plain_text
2 years ago
1.5 kB
7
Indexable
import "./styles.css"; import React from "react"; import { useState, useEffect } from "react"; class ConnectionClass { constructor() { console.log("Socket is created"); } connect(url) { console.log("Connected:" + url); } send(data) { console.log("Sending " + data); } disconnect() { console.log("Disconnected"); } subscribe(name) { console.log(name + " has subscribed"); } unsubscribe(name) { console.log(name + " has unsubscribed"); } } function Connection({ connection }) { const [isConnected, setIsConnected] = useState(false); const [url, setUrl] = useState(""); useEffect(() => { return () => { connection.disconnect(); }; }, [connection]); function handleButtonClick(e) { isConnected ? connection.disconnect() : connection.connect(url); setIsConnected(!isConnected); } return ( <> <button onClick={handleButtonClick}> {isConnected ? "Disconnect" : "Connect"} </button> <input type="text" value={url} onChange={(e) => setUrl(e.target.value)} /> </> ); } const connection = new ConnectionClass(); /* const connectionContext = { subscribe: connection.subscribe, unsubscribe: connection.unsubscribe, send: connection.subscribe }; */ export default function App() { return ( <div className="App"> <Connection connection={connection} /> </div> ); }
Editor is loading...