Я использую socket.io-client для получения последних данных крипто-монеты
constructor() {
super();
this.socket = openSocket('https://coincap.io');
}
, затем вызываю их в componentDidMount
componentDidMount() {
this.socket.on('trades', (tradeMsg) => {
for (let i=0; i< this.updateCoinData.length; i++) {
console.log("it is being called still")
if (this.updateCoinData[i]["short"] == tradeMsg.coin ) {
this.updateCoinData[i]["price"] = tradeMsg["message"]['msg']['price']
//Update the crypto Value state in Redux
this.props.updateCrypto(this.updateCoinData);
}
}
})
Поскольку сокет включен,он продолжит излучать сообщение.Теперь я думал, что при переходе с одного экрана на другой соединение с сокетом будет разорвано, и поэтому я делал что-то вроде этого
componentWillUnmount() {
this.socket.disconnect();
}
Но даже если я перешел на другую страницу, мой сокет продолжает излучатьсигналы, что означает, что он все еще подключен.
Я не уверен, что это из-за react-navigation
, но я использую StackNavigator
здесь.
Это мой react-navigation
компонент
export const MyScreen = createStackNavigator({
Home: {
screen: CoinCap
},
CoinCapCharts: {
screen: CoinCapCharts
},
CurrencySelection: {
screen: CurrencySelection
},
CoinChart: {
screen: CoinChart
},
News: {
screen: News
}
},{
initialRouteName: 'Home',
headerMode: 'none'
});
Вопрос: Как закрыть сокет, когда пользователь перемещается с одного экрана на другой?и включите его, когда пользователь перейдет к тому же экрану предоставления?