【发布时间】:2019-05-08 18:22:21
【问题描述】:
我正在尝试让棱镜和继电器工作。这是我的仓库:
https://github.com/jamesmbowler/prisma-relay-todo
这是一个简单的待办事项列表。我可以添加待办事项,但 ui 没有更新。当我刷新时,待办事项就在那里。
我能找到的所有更新商店的示例都对正在更新/创建的对象使用“父级”。
见https://facebook.github.io/relay/docs/en/mutations.html#using-updater-and-optimisticupdater
此外,“更新程序配置”还需要一个“父 ID”。 https://facebook.github.io/relay/docs/en/mutations.html#updater-configs
来自 relay-runtime 的 RelayConnectionHandler.js 评论: https://github.com/facebook/relay/blob/master/packages/relay-runtime/handlers/connection/RelayConnectionHandler.js#L232
* store => {
* const user = store.get('<id>');
* const friends = RelayConnectionHandler.getConnection(user, 'FriendsFragment_friends');
* const edge = store.create('<edge-id>', 'FriendsEdge');
* RelayConnectionHandler.insertEdgeAfter(friends, edge);
* }
是否可以在没有“父级”的情况下更新商店?我只有待办事项,没有父母。
再次,创建记录有效,并给出以下响应:
{“数据”:{ “创建待办事项”:{ “id”:“cjpdbivhc00050903ud6bkl3x”, “名称”:“测试”, “完成”:假 } } }
这是我的更新函数
updater: store => {
const payload = store.getRootField('createTodo');
const conn = ConnectionHandler.getConnection(store.get(payload.getDataID()), 'Todos_todoesConnection');
ConnectionHandler.insertEdgeAfter(conn, payload, cursor);
},
我做了一个console.log(conn),它是未定义的。
请帮忙。
----编辑---- 感谢 Denis,我认为解决了一个问题 - ConnectionHandler 的问题。
但是,我仍然无法更新 ui。这是我在更新程序功能中尝试过的:
const payload = store.getRootField('createTodo');
const clientRoot = store.get('client:root');
const conn = ConnectionHandler.getConnection(clientRoot, 'Todos_todoesConnection');
ConnectionHandler.createEdge(store, conn, payload, 'TodoEdge');
我也试过这个:
const payload = store.getRootField('createTodo');
const clientRoot = store.get('client:root');
const conn = ConnectionHandler.getConnection(clientRoot, 'Todos_todoesConnection');
ConnectionHandler.insertEdgeAfter(conn, payload);
我的数据形状与他们的示例不同,因为我的返回数据中没有“todoEdge”和“节点”(见上文)。
todoEdge { 光标 节点{ 完全的 ID 文本 } }
我如何像这样获得LinkedRecord?
const newEdge = payload.getLinkedRecord('todoEdge');
【问题讨论】:
-
谁是父母?是
query还是您的架构的任何其他类型? -
架构如下:github.com/jamesmbowler/prisma-relay-todo/blob/… - 是的,我相信查询是父级。
标签: reactjs graphql relayjs prisma