Я пытаюсь заставить работать призму и реле.Вот мой репо:
https://github.com/jamesmbowler/prisma-relay-todo
Это простой список задач.Я могу добавить задачи, но пользовательский интерфейс не обновляется.Когда я обновляюсь, то есть дело.
Все примеры обновления магазина, которые я могу найти, используют «родительский» объект, который обновляется / создается.
См. https://facebook.github.io/relay/docs/en/mutations.html#using-updater-and-optimisticupdater
Кроме того, для «настроек обновлений» также требуется «parentID».https://facebook.github.io/relay/docs/en/mutations.html#updater-configs
Из комментария RelayConnectionHandler.js relay-runtime здесь: 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);
* }
Можно ли обновить магазин, не имея «родителя»?У меня просто есть задачи, без родителей.
Опять же, создание записи работает и дает следующий ответ:
{"data": {"createTodo": {"id": "cjpdbivhc00050903ud6bkl3x", "name": "testing", "complete": false}}}
Вот моя функция обновления
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), и он не определен.
Пожалуйста, помогите.
---- Редактировать ---- Спасибо Денис, я думаю, что одна проблема заключается врешено - это ConnectionHandler.
Но я до сих пор не могу получить интерфейс для обновления.Вот что я попробовал в функции обновления:
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 {курсор узла {полный идентификатор текста}}
Как мнеgetLinkedRecord, как это?
const newEdge = payload.getLinkedRecord('todoEdge');