我正在我的网站上开发一个聊天功能,我正在开发Reactjs和Relayjs。
我可以在我的视图中成功地查询和显示相关数据(聊天消息)。但是,即使聊天伙伴发送了一条新消息,视图仍然是静态的。
我正在寻找实现这一点的方法,要么检查数据库更改,要么间隔执行相同的查询,然后获取更改(如果有的话)。
中继文档似乎没有描述如何做到这一点。我第一次考虑的是创建一个虚拟突变,它什么也不做,这样数据就会被重新获取,从而更新视图。然而,这不仅看起来是一个糟糕的实现,而且可能无法工作,因为突变只会返回更改,而不是整个结果集。
如果可能的话,我宁愿不使用第三方图书馆。
这是我的中继器:
export default Relay.createContainer(StartConversationModal, {
prepareVariables() {
return {
limit: 1000,
};
},
fragments: {
conversation: () => Relay.QL`
fragment on Conversation {
id,
title,
type,
conversationDataList(last: $limit) {
edges {
node {
last_read_message_id,
member {
id,
user {
firstname,
lastname
}
}
}
}
},
messageList(last: $limit) {
edges {
node {
id,
message,
sent_on,
member {
id,
role,
user {
firstname,
lastname
}
}
}
}
},
task {
title,
},
${AddMessageMutation.getFragment('conversation')},
}
`,
},
});发布于 2016-03-11 15:06:10
要重新获取容器的所有片段,可以使用RelayContainer提供的命令式RelayContainer API,请参阅文档
基本上,在StartConversationModal内部,您可以设置一个计票器,将forceFetch从this.props.relay上调用。请注意,这将重新获取整个连接,这可能不是您想要的,您必须对它进行实验。
https://stackoverflow.com/questions/35919036
复制相似问题