私のnode.jsサーバーはsocket.ioで新しいデータを10秒ごとに送信します。私のWebアプリケーションでは、私のサーバがデータを送信しforceUpdate()で更新するたびにthis.stateを更新します。反応コンポーネントをリフレッシュする
しかし、私の反応コンポーネントはリフレッシュされません。私は、docに続くが、私は何か...
親逃した:
class DataAnalytics extends React.Component {
constructor(props) {
super(props);
socket = this.props.socket;
this.state = {data: []};
socket.on('dataCharts', (res) => {
console.log("new data charts : "+res);
var data = JSON.parse(res);
this.setState({data: data});
this.forceUpdate();
});
}
componentWillUnmount() {
socket.off('dataCharts');
}
render() {
return (
<div id="dataAnalytics">
<Stats data={this.state.data}></Stats>
</div>
);
}
}
export default DataAnalytics;
子供:
class Stats extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div className="stats" style={{textAlign:'center'}}>
<h4>Number: </h4>
</div>
);
}
componentDidUpdate() {
var data = this.props.data;
if(!jQuery.isEmptyObject(data)) {
$(".stats").html("<h4>Number : data['nb']['counterIn']</h4>");
}
}
}
export default Stats;
誰もがコンポーネントに反応マイ自動的に更新する方法を知っているが。
が、同じresult:/ –
役立つかもしれない...私は別の方法(componentDidUpdate、componentWillMount ...)に配置しようとした
– onedkr親内部の設定が正しいように見えます。データはすべてのサイクルで新しいものでなければならず、setState()は親と子を再描画する必要があります(forceUpdate()も必要ありません)。ソケットが正しく動作していますか?複数のconsole.log行がありますか? – wintvelt