重新执行 relayjs 查询
Re-execute relayjs query
我正在使用 Reactjs 和 Relayjs 开发我网站上的聊天功能。
我可以成功查询并在我的视图中显示相关数据(聊天消息)。但是,即使聊天伙伴发送新消息,视图仍保持静态。
我正在寻找实现此目的的方法,方法是检查数据库更改或定期执行相同的查询,然后获取更改(如果有)。
中继文档似乎没有描述如何执行此操作。我首先考虑创建一个不执行任何操作的虚拟突变,以便重新获取数据以更新视图。然而,这不仅看起来是一个糟糕的实现,而且它可能不会起作用,因为突变只会 return 更改,而不是整个结果集。
如果可能的话,我宁愿不使用第 3 方库。
这是我的中继容器:
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')},
}
`,
},
});
要重新获取容器的所有片段,可以使用 RelayContainer 提供的命令式 forceFetch
API,请参阅 docs
基本上,在 StartConversationModal
中,您可以设置一个轮询器来调用 forceFetch
off this.props.relay
。请注意,这将重新获取可能不是您想要的整个连接,您必须对其进行试验。
我正在使用 Reactjs 和 Relayjs 开发我网站上的聊天功能。
我可以成功查询并在我的视图中显示相关数据(聊天消息)。但是,即使聊天伙伴发送新消息,视图仍保持静态。
我正在寻找实现此目的的方法,方法是检查数据库更改或定期执行相同的查询,然后获取更改(如果有)。
中继文档似乎没有描述如何执行此操作。我首先考虑创建一个不执行任何操作的虚拟突变,以便重新获取数据以更新视图。然而,这不仅看起来是一个糟糕的实现,而且它可能不会起作用,因为突变只会 return 更改,而不是整个结果集。
如果可能的话,我宁愿不使用第 3 方库。
这是我的中继容器:
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')},
}
`,
},
});
要重新获取容器的所有片段,可以使用 RelayContainer 提供的命令式 forceFetch
API,请参阅 docs
基本上,在 StartConversationModal
中,您可以设置一个轮询器来调用 forceFetch
off this.props.relay
。请注意,这将重新获取可能不是您想要的整个连接,您必须对其进行试验。