Лахлан молодой
Скорее всего, как и многие люди, вы приезжаете на Apollo и GraphQL с фона отдыха API. Тем не менее, когда вы начинаете изучать рабочие примеры этого стека и различных способов реализации его, вы, несомненно, будете созрены на множестве различий, будь то библиотеки Apollo, или вся «получите ваши данные, как вы хотите» Менталитет вокруг GraphQL и компонентов Apollo’s Render.
То, что я хочу сделать в этой статье, помогает подать два ключевых вопроса при написании мутации. Это в первую очередь нацелены на реализации HOC Однако это более или менее то же самое для компонентов Render, вместо этого настроить клавиши объектов.
В частности, мы будем прыгать прямо в оптимистичности вместе с параметрами обновления вашей мутации HOC. Я надеюсь, что это сделает вас более осведомленным о том, какие варианты у вас есть, когда речь идет о реализации мутации в качестве функции PROP.
Важно: .. Если вы только начинаете начинаться только с Apollo, я искренне умоляю вас реализовать свои компоненты рендеринга, которые они выпустили вокруг версии 2.1. HOCS мягкие устаревшие и как таковые, отсутствуют много их документации, как упомянуто несколько человек. здесь Отказ
Оптимистичный ответ
OmitualisticResponse – это способ, которым мы управляем, если наше приложение онлайн или не наряду с статусом наших запросов к БД.
Если мы мутируем нашу базу данных без подключения, оптимистичный ответ позволяет ей существовать с переменными, которые мы разумно ожидаем.
Например Если предположить, что мы добавим этого пользователя к БД:
{ userId: 123, firstName: "Lachlan", lastName: "Young", status: "Hungry"}Мы хотели бы обновить наши данные пользователя с вышеуказанными данными. Однако из-за того, как работают наши мутации (и это специально для HOCS, но могут быть применены для рендеринга компонентов тоже), существует жизненный цикл мутации, идущий от загрузки, к успеху/отказу/не может подключиться.
Если в любой момент мутация не удается, но не ошибка, ваш клиент Apollo знает, что это из-за чего-то другого, кроме плохого объекта. Этим я имею в виду, что он учитывает ваш автономный статус, состояние запроса, и он вместо этого будет представлять этот пользователь на компонент пользовательских деталей, поскольку он предполагает, что это действительно. Поэтому ваш клиент оптимистичен.
Когда вы снова подключаетесь к Интернету или достигнете DB, он будет обновлять ответ с действительными данными. Внутри этого ответа вы можете обрабатывать такие вещи, как useriD, который вы генерируете на клиенте, поэтому обновляя мой жесткозедированный идентификатор 123, к UUID.
Если бы мы не были онлайн, мы все еще видели и взаимодействуют с запросом, как ожидалось, и любые изменения будут поставлены в очередь, чтобы затем мутировать сервер после подключения.
Это оптимистичный ответ.
Обновлять
Что касается того, как справиться с ответом из базы данных, у вас на самом деле есть доступ к недвижимости, называемую Обновление и для HOCS это выглядит так:
update: (proxy, { data: { myDetails } }) => { try { // Read the data from our cache for this query. const data = proxy.readQuery({ query: gql`${GET_MY_DETAILS}` });// Add our new request from the mutation to the end. data.getMyDetails.push(myDetails);
// Write our data back to the cache. proxy.writeQuery({ query: gql`${GET_MY_DETAILS}`, data }); } catch (err) { console.log('Error updating the cahche: ', err.message); }}По сути, это происходит после поля оптимистичности в мутации. Он напрямую обрабатывает, что произойдет после того, как вы получите ответ, принимая его с вершины у него есть прокси и данные Как это два аргумента. Прокси Необходимо буквально наш клиент, однако для некоторых конфигураций вам может быть лучше обслуживаться в качестве кэша. Данные это ответ от мутации. В этом случае я деконструировал, чтобы объяснить объект MyDetails дальше.
MyDetails состоит из всего в пользовательском объекте выше, но теперь идентификатор будет действительным UUID вместо 123. Затем мы используем методы avolloclient для чтения и записи и прочтения деталей, которые мы сохранили в нашем кеше. Оттуда мы добавляем наши новые детали и напишите их в кеш. Таким образом, после того, как я вернулся к своим деталям от входной страницы, мои новые детали будут мгновенно доступны, потому что они являются точкой истины в кэше.
Дополнительная информация
Как написать это, все рендеринг реквизиты документированы здесь или увидеть ниже для долголетия, может быть применено к вашей мутации HOC. Как я уже упоминал во введении в настоящую статью, документация HOC действительно устарела. Тем не менее, параметры, приведенные ниже, все могут быть реализованы в виде клавиш к объекту HOC.
Большое спасибо за чтение. Обычно вы можете видеть, как я плаваю вокруг провисания Аполлона в каналах # React-Apollo или # Apollo. Чтобы зарегистрироваться для провисания и получить больше конкретных советов, нажмите здесь Отказ
Оригинал: “https://www.freecodecamp.org/news/do-apollo-hoc-mutations-goodly-bb4effdbee94/”