When I click on the button send data..React shows the data sent by socket.io. What I am trying to do is have the data shown from another app outside of react. I can see that from the server the side it emits the data when using another application, but it doesn't display on react when I try to console.log(). It will only show when i press the button? Its really weird I am not sure why that is happening? Any help would be really appreciated.
Client side
import React, {useEffect, useState} from "react";
import io from "socket.io-client";
import {connect} from 'react-redux';
import {addNewOrder} from '../service/actions';
import {Link} from "react-router-dom";
import _ from "lodash";
let socket ;
function ListOrders ({addNewOrder,orders}) {
try {
socket = io("http://localhost:3001");
socket.on("add_new_order", new_order => {
console.log(new_order);
console.log("okk");
//console.log("called once");
addNewOrder(new_order);
});
} catch (e) {
console.log(e)
}
function SendSocketData(socket) {
/*
*
* Emit is all of a sudden undefined when click on the "Send Data" button second time
*
* */
socket.emit("new_order", new_order => {
});
}
return (
<div className="App">
<button onClick={()=>SendSocketData(socket)}>Send Data </button>
{orders.map((order) =>
<Link to={`order_details/${order.id}`}>
<div>
<div> <b>{order.order_method}</b> </div>
<div> <b>{order.full_name}</b> </div>
</div>
</Link>
)}
</div>
);
}
const mapStateToProps = state => ({
orders: _.filter(state.orders,{is_confirmed: 0})
})
const mapDispatchToProps = dispatch => {
return ({
addNewOrder: (order) => dispatch(addNewOrder(order))
})
}
/*
*
*
* NOT WORKING WHEN I ADD mapStateToProps
*
* */
export default connect(mapStateToProps,mapDispatchToProps)(ListOrders)
Server side
const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
io.on('connection', (socket) => {
//console.log(socket.id,"Connection"); // ojIckSD2jqNzOqIrAGzL
socket.on("new_order", (arg) => {
console.log("new_order");
console.log(["hi"]);
socket.emit("add_new_order",["hi"]);
});
});
server.listen(3001);