#svelte #svelte-store
#стройная #стройный магазин
Вопрос:
С помощью URLQ, получившего сообщение из GraphCMS — URLQ создает магазин, который выглядит следующим образом:
{ "stale": false, "fetching": false, "data": { "post": { "title": "Technical SEO with GraphCMS", "date": "2020-05-05", "tags": [ "SEO" ], "content": { "html": "lt;pgt;Lorem ipsum dolor sit ametlt;/pgt;", "__typename": "RichText" }, "coverImage": { "url": "https://media.graphcms.com/resize=fit:clip,width:600/hujVF2oRi2J1gDKdk0ic", "__typename": "Asset" }, "__typename": "Post" } } }
Я хотел бы выделить часть после переменной post.
Когда я пытаюсь получить доступ к нему с помощью: $post.data, все работает нормально, но я все еще получаю переменную «post» на выходе.
В тот момент, когда я использую $post.data.post, я получил 500 ошибок — Не удается прочитать свойство «post» неопределенного
Как получить доступ к этому вложенному значению?
Комментарии:
1. Что произойдет, если вы распространите копию значения хранилища внутри такого объекта ?
const {data} = $post
Ответ №1:
Ошибка, скорее всего, вызвана тем, что вы пытаетесь прочитать $post.data.post
до того, как (асинхронный) запрос фактически завершится.
Попробуйте добавить условное условие, что-то вроде этого, например:
$: postData = $post.fetching ? undefined : $post.data.post
В качестве альтернативы вы можете попробовать использовать дополнительную цепочку, если ваш проект настроен на использование ES11:
$: postData = $post.data?.post
хотя я считаю, что первый подход, приведенный выше, лучше, поскольку он лучше выражает намерение и более читаем.