relay cache - ConnectionHandler createEdge vs buildConnectionEdge
createEdge
When the payload provided by the server is a
node
, it creates an edge for a specific connection using that node.You can see that the third argument is a node.
type CreateTodoPayload { todo: TodoNode! } type Mutation { createTodo(input: CreateTodoInput!): CreateTodoPayload! }
Relay cache updater example:
const serverTodo = store.getRootField('createTodo').getLinkedRecord('todo') const todoEdges = todosConnection?.getLinkedRecords('edges') const newTodoEdge = ConnectionHandler.createEdge( store, todosConnection, serverTodo, // node type 'TodoEdge', )
buildConnectionEdge
When the payload provided by the server is a
Connection
, it creates an edge for a specific connection using that edge.You can see that the third argument is an edge.
type TodoConnection implements Connection { edges: [TodoEdge!]! pageInfo: PageInfo! count: Int } type Mutation { createTodo(input: CreateTodoInput!): TodoConnection! }
Relay cache updater example:
const serverEdges = store.getRootField('createTodo').getLinkedRecords('edges') const newEdge = ConnectionHandler.buildConnectionEdge(store, connection, serverEdge) if (!newEdge) { return } ConnectionHandler.insertEdgeAfter(connection, newEdge)
Conclusion
- To create a connection edge from a
node
, usecreateEdge
.
- To create an edge from an edge provided by a
Connection
, usebuildConnectionEdge
.
Use them according to their intended purpose.