前提・実現したいこと
Reactとskyway-jsでWebRTCを使ったアプリを作っているのですが、Reactのコンポーネントをクリックしたときに関数を実行し、その中でskyway-jsのopenを実行して、コールバックを受け取りたい。
困っていること
実現したい事をそのままコードに書いてみましたが、コールバック関数が実行されないです。
また、なぜこれだとできないのか知りたいです。
該当のソースコード
JavaScript
1// jsx 2import React from 'react'; 3import Peer from 'skyway-js'; 4 5 6// keyは伏せさせていただきます。 7const peer = new Peer({ 8 key: 'xxxxx', 9 debug: 3 10}); 11 12class App extends React.Component { 13 constructor() { 14 super(); 15 16 peer.on('open', () => { 17 // 実行される 18 console.log(peer.id) 19 }); 20 } 21 22 func() { 23 peer.on('open', () => { 24 // 実行されない 25 console.log(peer.id) 26 }); 27 } 28 29 render() { 30 31 return ( 32 <div className="container"> 33 <button type="button" onClick={() => this.func()}> 34 ボタン 35 </button> 36 </div> 37 ) 38 } 39} 40 41export default App;
試したこと
Reactのライフサイクル(constructor
やcomponentDidMount
)で該当のpeer.on('open', () => {console.log(peer.id)});
を実行すると問題なくコールバックが実行され、logにpeer.idが出力されます。
あなたの回答
tips
プレビュー