Written by Paul
relay cache - ConnectionHandler createEdge vs buildConnectionEdge
createEdge
์๋ฒ์์ ์ค Payload๊ฐ
node
์ธ ๊ฒฝ์ฐ์ ํด๋น ๋
ธ๋๋ฅผ ๊ฐ์ง๊ณ ํน์ ์ปค๋ฅ์
์ ์ฃ์ง๋ฅผ ์์ฑํด ์ค๋๋ค.์ธ ๋ฒ์งธ ์ธ์์ธ node ์์ ํ์ธํด ๋ณผ ์ ์์ต๋๋ค.
type CreateTodoPayload { todo: TodoNode! } type Mutation { createTodo(input: CreateTodoInput!): CreateTodoPayload! }
ย
relay cache updater ์์
const serverTodo = store.getRootField('createTodo').getLinkedRecord('todo') const todoEdges = todosConnection?.getLinkedRecords('edges') const newTodoEdge = ConnectionHandler.createEdge( store, todosConnection, serverTodo, // node ํ์ 'TodoEdge', )
ย
buildConnectionEdge
์๋ฒ์์ ์ค Payload๊ฐ
Connection
์ธ ๊ฒฝ์ฐ์ ํด๋น ์ฃ์ง๋ฅผ ๊ฐ์ง๊ณ ํน์ ์ปค๋ฅ์
์ ์ฃ์ง๋ฅผ ์์ฑํด์ค๋๋ค์ธ ๋ฒ์งธ ์ธ์๊ฐ edge ์์ ํ์ธํด ๋ณผ ์ ์์ต๋๋ค.
type TodoConnection implements Connection { edges: [TodoEdge!]! pageInfo: PageInfo! count: Int } type Mutation { createTodo(input: CreateTodoInput!): TodoConnection! }
ย
relay cache updater ์์
const serverEdges = store.getRootField('createTodo').getLinkedRecords('edges') const newEdge = ConnectionHandler.buildConnectionEdge(store, connection, serverEdge) if (!newEdge) { return } ConnectionHandler.insertEdgeAfter(connection, newEdge)
ย
๊ฒฐ๋ก ์ ์ผ๋ก
- node ๋ฅผ ํตํด์ connection edge๋ฅผ ์์ฑํ๋ ค๋ฉด
createEdge
- connection ์ผ๋ก๋ถํฐ ์ ๋ฌ๋ edge๋ฅผ ํตํด์ edge ๋ฅผ ์์ฑํ๋ ค๋ฉด
buildConnectionEdge
๋ฅผ ์ฉ๋์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.