#reactjs #gatsby
#reactjs #gatsby
Вопрос:
Я прочитал документы gatsby-image, но не могу понять, как что-то отключить. По умолчанию кажется, что gatsby-image загружает миниатюру изображения, затем загружает изображение постепенно. В принципе, приятный эффект заполнителя. Но я обнаружил, что мой логотип продолжает размываться при каждой смене страниц. Вот мой код:
<StaticQuery
query={graphql`
query {
file(relativePath: { eq: "appendto_logo.png" }) {
childImageSharp {
# Specify the image processing specifications right in the query.
# Makes it trivial to update as your page's design changes.
fixed(width: 150) {
...GatsbyImageSharpFixed
}
}
}
}
`}
render={data => <Img fixed={data.file.childImageSharp.fixed} />}
/>
Есть мысли? Как предотвратить этот эффект размытия? Или эффект загрузки миниатюр…
Ответ №1:
Переключение на GatsbyImageSharpFixed_noBase64
решило проблему (вместо просто ...GatsbyImageSharpFixed
)
Ответ №2:
Обновить
critical
теперь не рекомендуется в пользу loading
:
- <Img critical fixed={ ... } />
<Img loading="eager" fixed={ ... } />
Также используйте _noBase64
четкие фрагменты, чтобы полностью удалить эффект размытия, как было предложено в комментарии @ epsilon42 и ответе Кайла.
И, наконец, чтобы сохранить компонент (панель навигации и т.д.) При загрузке страницы, вы можете обернуть страницы в макет с помощью этого компонента.
Оригинальный ответ
Я думаю, вы можете передать critical
реквизит к изображению Гэтсби, вот так: <Img critical fixed={ ... }>
Это всегда будет загружать изображение немедленно. Возможно, вы захотите добавить fadeIn
туда же:
Изображения, помеченные как критические, начнут загружаться сразу после анализа DOM, но если для параметра fadeIn не установлено значение false, переход от заполнителя к конечному изображению не произойдет до тех пор, пока компонент не будет смонтирован.
Комментарии:
1. Hmmm…No игральная кость на этом … интересно, какой еще атрибут это может быть.
2.
critical
у меня получилось убрать эффект размытия — единственное исключение из этого было при первой загрузке логотипа, но при переходе на все остальные страницы после этого анимация размытия не отображалась. К вашему сведению: propcritical
теперь устарел в пользуloading={
eager}
. Однако в документах рекомендуется использовать фрагмент с_noBase64
в конце
Ответ №3:
Чтобы избежать эффекта размытия, вы могли бы просто скрыть заполнитель, используя placeholderStyle
атрибут:
<Img fixed={data.logoImage.childImageSharp.fixed} placeholderStyle={{ visibility: "hidden" }}/>