Когда вы получаете событие change color
, вы в настоящее время заменяете this.state.log
на то, что вы получаете, я полагаю, что вам нужно добавить то, что вы получите, в свой массив log
:
socket.on('change color', (col) => {
this.setState({
log: [
...this.state.log,
col
]
})
})
Кстати, в вашем фрагменте кода много неправильного:
this.state = {
endpoint: "http://xx.xxx.xxx.xx:3000/",
};
Ваша конечная точка, вероятно, не должна находиться в вашем состоянии, если только ее изменение не вызовет повторную визуализацию вашего компонента.
Вы должны создавать экземпляр вашего сокета и события сокета один раз в конструкторе:
constructor () {
this.socket = socketIOClient('http://xx.xxx.xxx.xx:3000/');
this.socket.on('change color', () => {
// Do something
});
}
send = () => {
this.socket.emit('change color', this.state.text);
}
, а не каждый раз в вашей функции рендеринга.