更新数据时的React.js生命周期
React.js cycle of life when updating data
我想要什么:
我有一个node.js服务器、一个captor和一个react.js客户端。每次捕获器检测到什么东西时,它都会通过socket.io向我的节点服务器发送一条消息,该消息会将数据返回到我的React网站(JSON)。
我希望每次我的客户端React.js从我的服务器接收到新数据时,它都会自动刷新指定的组件(通常是图表)。
我的代码:
Index.jsx
class App extends React.Component {
constructor(props) {
super(props);
this.state = {data: []};
socket.on('dataCards', function (cards) {
this.state = {data: cards};
});
}
render () {
return (
<div className="container-fluid">
<NavBarTop />
<div className="row">
<NavFilter />
<div className="col-sm-7-5 col-md-7-5" id="mainPage">
<DataAnalytics />
<CardsList data={this.state.data} />
</div>
<Interventions />
</div>
</div>
);
}
}
render(<App />, document.getElementById('container'));
卡片列表.jsx:
import React from 'react';
class Card extends React.Component {
constructor(props) {
super(props);
}
rawMarkup() {
var rawMarkup = marked(this.props.children.toString(), {sanitize: true});
return { __html: rawMarkup };
}
render() {
return (
<div className="ticket">
<h2 className="cardUID">
{this.props.uid}
</h2>
<span dangerouslySetInnerHTML={this.rawMarkup()} />
</div>
);
}
}
export default Card;
我对React.js的生命周期不是很熟悉。不幸的是,在数据到达我的客户端之前调用了render。因此,当调用cardlist.jsx时,props.data为null。
我不知道如何构建我的代码来做我想做的事情。。。
有人能帮我吗?
第一次渲染时不会有数据。只是在这期间抛出一个装载指示器或其他什么东西。您应该在componentDidMount或componentWillMount中加载数据。
您需要使用setState函数来更新您的状态。它将触发您的组件的重新发布。只使用"this.state=something"来设置组件的初始状态。
socket.on('dataCards', (cards) => {
this.setState({data: cards});
});
您可能希望使用componentWillMount或componentDidMount生命周期挂钩来侦听socket.io并停止侦听componentWillUnmount挂钩。
componentDidMount() {
socket.on('dataCards', (cards) => {
this.setState({data: cards});
});
}
componentWillUnmount() {
socket.off('dataCards');
}
此外,你的卡组件在我看来很奇怪。但我没有关于你的代码的详细信息来提供一些建议。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 当js函数's已执行
- 主干网的生命周期.js创建过程中的视图
- 更新数据时的React.js生命周期
- 如何将请求生命周期事件封装在 happy.js 中
- 节点.js简单的 Web 服务器请求生命周期
- 取消sails.js模型生命周期回调中的默认行为
- 使用回调时express.js请求/响应对象的生命周期
- jQuery DOM的改变需要JS重新运行,JS是一个生命周期
- react.js中的生命周期事件状态和prevState
- 我们来看看ember/ember-data对象的生命周期如何?或者调试Ember.js和Ember-Data的提示/提示
- Windows UWP应用生命周期:如何防止JS/HTML/CSS应用中的重载