Gatsbyによる反応Splide:一番上の先端
9407 ワード
更新プログラム:Splideは、現在バージョン3と(更新以来)ですReact Splide 追加の設定なしでgatsby(v 4でテストされた)とうまく動作するように見えます.この記事は、反応Splideの古いバージョンを使用する場合にのみ有用です.
あなたがSplidejsに決して遭遇しないならば、私はあなたにそれをチェックするよう奨励します.これは、カルーセルを構築するための素晴らしいプラグインだと私は、ドキュメントは素晴らしいと思います.Check out SplideJS here .
私の痛い午後についてあなたに話すことから始めましょう.
今日は、ギャツビーを使ってクライアントのウェブサイトで働いています.今日までは、すべてがうまくいっている!今日の私の仕事はカルーセルのコンポーネントを開発することだったので、私は私の好きなツール(splide)になって、私は彼らが反応ポートを持っていることに気づいた.「ものすごい」私は考えました.
それからnetlifyログのエラーに気がついた.
のデバッグ
HTMLビルドのデバッグについては、gatsbyドキュメントに大きなセクションがありますhere . 私はこれを相談し、サードパーティ製モジュールのセクションを見つけました.私は、このアプローチを
イン
したがって、カルーセルコンポーネントの最終結果は以下の通りです.
結論
私は、それがこの問題に遭遇する他の誰でも助けるという望みで、これを書きました.あなたがそれが役に立つならば、コメントで私に知らせてください.
ありがとう
あなたがSplidejsに決して遭遇しないならば、私はあなたにそれをチェックするよう奨励します.これは、カルーセルを構築するための素晴らしいプラグインだと私は、ドキュメントは素晴らしいと思います.Check out SplideJS here .
私の痛い午後についてあなたに話すことから始めましょう.
今日は、ギャツビーを使ってクライアントのウェブサイトで働いています.今日までは、すべてがうまくいっている!今日の私の仕事はカルーセルのコンポーネントを開発することだったので、私は私の好きなツール(splide)になって、私は彼らが反応ポートを持っていることに気づいた.「ものすごい」私は考えました.
それからnetlifyログのエラーに気がついた.
14 | else
15 | root["Splide"] = factory();
> 16 | })(self, function() {
| ^
17 | return /******/ (() => { // webpackBootstrap
18 | /******/ "use strict";
19 | /******/ var __webpack_modules__ = ({
WebpackError: ReferenceError: self is not defined
これはよく見えません.のデバッグ
HTMLビルドのデバッグについては、gatsbyドキュメントに大きなセクションがありますhere . 私はこれを相談し、サードパーティ製モジュールのセクションを見つけました.私は、このアプローチを
window
HTMLビルド中にオブジェクトを作成するので、私はこの移動を与えると思いました.イン
gatsby-node.js
次のように付け加えました.exports.onCreateWebpackConfig = ({ stage, loaders, actions }) => {
// With SSR enabled during development, we capture this
// in development and during production build.
if (stage === "build-html" || stage === "develop-html") {
actions.setWebpackConfig({
module: {
rules: [
{
test: /@splidejs/,
use: loaders.null(),
},
],
},
})
}
}
グレート💥 走りましょうgatsby build
再び.あらまあError: Minified React error #130; visit https://reactjs.org/docs/error-decoder.html?invariant=130&args[]=undefined&args[]= for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
新しいエラーがあります.新しいエラーは良い、それは進行を意味する!エラーデコーダURLを新しいブラウザにコピーすると、以下のエラーが返されます.Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined.
最初は困惑していたが、コーヒーの後は意味があった.私たちは、WebPackに反応したsplideをダミーモジュールに置き換えるように伝えました.The loaders.null()
我々は何も価値を返すつもりはないことを示唆undefined
.したがって、カルーセルコンポーネントの最終結果は以下の通りです.
export const Testimonials = ({ data }) => {
if (typeof window === "undefined") {
return <p>Server Render</p>
}
return (
<Box mb={24}>
<Splide
options={{
perPage: 1,
perMove: 1,
arrows: false,
}}
>
{data.map(testimonial => {
return (
<SplideSlide key={testimonial.id}>
<Flex bgColor="blue.600">
<Box width="400px">
{/* To be replaced with Gatsby Image */}
<img src={testimonial.imageUrl} alt={testimonial.alt} />
</Box>
<Box py={12} px={12} display="flex" flex={1} color="white">
<PortableText blocks={testimonial._rawTestimonialText} />
</Box>
</Flex>
</SplideSlide>
)
})}
</Splide>
</Box>
)
}
つまり、HTMLビルドが行われると、コンポーネントは戻ります<p>Server Render</p>
むしろundefined
. ブラウザでコードを実行すると、window
が定義され、splideコンポーネントが表示されます.結論
私は、それがこの問題に遭遇する他の誰でも助けるという望みで、これを書きました.あなたがそれが役に立つならば、コメントで私に知らせてください.
ありがとう
Reference
この問題について(Gatsbyによる反応Splide:一番上の先端), 我々は、より多くの情報をここで見つけました https://dev.to/jamiebradley/react-splide-with-gatsby-top-tip-1ppeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol