Я использую Gatsby с Netlify CMS, и мне нужно изменить данные, полученные с помощью ловушки Gatsby useStaticQuery
.
Например, в Netlify CMS я позволяю пользователям определять, какие шрифты Google они хотят использовать дляразличные стили оформления (например, от h1 до h6, кнопки, основной текст и т. д.). Затем мне нужно импортировать шрифты в <head>
, и для этого я запускаю довольно дорогую функцию, которая объединяет все семейства шрифтов и веса в |массив разделенных строк (например, "Open+Sans:400,500|Roboto:300|Montserrat:500,600,700"
). Это дорого, так как мне нужно объединить все семейства шрифтов и веса, не допуская дубликатов.
У меня есть и несколько других вариантов использования. Например, я использую Material UI и мне нужно передать объект theme
компоненту <ThemeProvider theme={theme}>
. Для этого мне нужно изменить данные, полученные из useStaticQuery
, чтобы создать объект theme
.
Это действительно нужно только во время сборки, поскольку оно никогда не изменяется во время выполнения. Кроме того, в настоящее время вы не можете использовать useStaticQuery
в wrapRootElement
, поэтому эта функция будет запускаться при каждой загрузке страницы.
Есть ли способ запустить эту функцию во время сборки Gatsby, так чтовозвращаемое значение доступно как опора?