reactjs - ReactJS:如何渲染从 websocket 获得的值
问题描述
我有以下代码。在控制台中我正确收到了这个:
每次这都正常工作,每次从 WebSocket 接收到新值时,都会出现新的控制台消息。
如何在p
之后提取并渲染它的值VALUE:
?每次产生事件时这个值会改变吗?
import React, { Component, Fragment } from "react";
class Dashboard extends Component {
state = {
dataFromServer: []
};
ws = new WebSocket("wss://stream.binance.com:9443/ws/xrpeur@trade");
//Esperamos a que los daos sean cargados.
componentDidMount() {
this.ws.onopen = () => {
// on connecting, do nothing but log it to the console
console.log("connected");
};
this.ws.onmessage = evt => {
// listen to data sent from the websocket server
const message = JSON.parse(evt.data);
this.setState({ dataFromServer: message });
console.log(message);
};
this.ws.onclose = () => {
console.log("disconnected");
// automatically try to reconnect on connection loss
};
}
render() {
return (
<Fragment>
VALUE:{" "}
{this.state.dataFromServer.map(valor => (
<p>{valor.e}</p>
))}
</Fragment>
);
}
}
export default Dashboard;
解决方案
from 的值JSON.parse(evt.data)
是一个对象。删除您对地图的调用,然后直接访问属性this.state.dataFromServer
。此外,它看起来像e
always "trade"
,因此您不会看到该更新。
查看此代码框以查看它的工作原理。
推荐阅读
- javascript - 应用程序运行时间少于 24 小时并且总是抛出错误
- asp.net - 如何让 Visual Studio Design 正确渲染 Bootstrap?
- java - 使用泛型和接口,返回类型是对象,而不是类型
- node.js - TypeError:无法读取未定义的属性“setVoiceChannel”| 尝试使用 discord.js 移动用户
- c# - Display text instead of ID in WPF DataGrid
- c# - Rally RestApi 在调用 AuthenticateWithApiKey 后返回“NotAuthorized”AuthenticationState
- android - “使用 SMS Retriever API 进行自动 SMS 验证”与“使用电话号码通过 Firebase 进行身份验证”
- amazon-dynamodb - AWS 按非主键删除项目
- typescript - 如何使用基于类的 Vue 组件获取类型化的 $data
- qt - 如何将注意力集中在您要禁用的复选框上