【发布时间】:2014-09-22 01:06:17
【问题描述】:
我有一个策略问题。
我想使用 signalR 更改我网站中的数据并使用 react 显示更改的数据。我的问题是:如何在 signalR 和 react 之间执行数据绑定?
我的第一条线索如下:
信号R:
chat.client.addMessage = function (name, message) {
chatHistory.push({ Author: name, Text: message }); //here I change global variable chatHistory
};
反应:
var CommentList = React.createClass({some class here});
var CommentBox = React.createClass({
componentRefresh: function () {
this.setState({ data: chatHistory });
},
getInitialState: function () {
return { data: chatHistory };
},
componentDidMount: function () {
this.componentRefresh();
setInterval(this.componentRefresh, this.props.interval);
},
render: function () {
return (
React.DOM.div(null,
CommentList({ data: this.state.data })
)
);
}
});
React.renderComponent(
CommentBox({ interval: 2000 }),
document.getElementById('content')
);
在 react commentBox 组件中,我提供全局 chatHistory 并每 2 秒请求一个新值。
还有更优雅的方法吗? 如果 chatHistory 变量没有改变,如何避免重绘评论框?
【问题讨论】:
-
唯一体面的方法要求 signalR 会在数据发生变化时告诉你(我不知道 signalR)。
-
您不能在 SignalR addMessage 回调结束时调用
myCommentBoxInstance.setState({ data: chatHistory });以立即重新呈现您的评论框吗?那么您可能不需要使用间隔。