ソケットの設定方法が問題であるかどうか、またはデータのレンダリングが正しくないリアクションでReactとSocket.io:初期データを取得することができますが、新しい投稿が入ったときにビューが更新されません
私のソケットでデータを正常に取得できますが、新しいデータがサーバーに送信されたときには更新されません。私の意図はReactの州が新しいデータを自動的にレンダリングすることです。ソケット接続のために常に生きています。ここで
は、サーバからメッセージを取得し、それらをレンダリング私のクライアントアプリです:
var Chat = React.createClass({
getInitialState: function() {
return {
messages: null
}
},
componentWillMount: function(){
var self = this;
socket.emit('getMessages');
socket.on('serverMessages', function (data) {
self.setState({messages: data})
});
},
render: function() {
var messages = this.state.messages ? <MessageList messages={this.state.messages}/> : null
return (
<div className="jumbotron">
{ messages }
<MessageForm submitMessage={this.submitMessage}/>
</div>
);
}
});
ここにデータを発する私のサーバーコードです念のために:
io.on('connection', function (socket) {
socket.on('getMessages', function (data) {
Message.find(function(err, messages){
socket.emit('serverMessages', messages);
})
});
});
コードは急いでブラウザで書かれ、テストされていないため、誤植やロジックエラーがある場合はお詫び申し上げます。元の例の重要な欠陥は、 'getMessages'のためのイベントハンドラがありませんでした – kwcto
ありがとう@kwcto - 私はあなたのフィードバックを実装しましたが、それは同じように動作します。新しいメッセージはページの更新時にのみ表示されます。 (私は新しい実装を反映するために質問を更新しました) – fresh5447