Puck は React 用のオープンソース ビジュアル エディターであり、次世代のページ ビルダーとノーコード製品を強化します。 GitHub でスターを付けてください! ⭐️
Puck をページ構築製品に統合する場合、共通の要件は、ユーザーがすべてのコンポーネントを調整することなくページのテーマを一元管理できるようにすることです。
例: ユーザーは、ページに既に追加されているコンポーネントであっても、フォント スタイルをグローバルに管理する方法を必要としています。実際の動作は次のとおりです:
Puck は単なる React コンポーネントであるため、この問題を解決する方法はたくさんあります (他のより複雑な状態を管理するだけでなく)。この記事では、最もシンプルでありながら最も強力なアプローチの 1 つである CSS プロパティに焦点を当てます。飛び込んでみましょう!
このチュートリアルでは、Puck とその機能について基本的に理解していることを前提とします。 Puck を初めて使用する場合でも、心配しないでください。引き続きフォローしていただけます。ただし、基礎を理解するためにスタート ガイドを確認することをお勧めします。
Vite のスキャフォールディング スクリプトを使用してプロジェクトをセットアップすることから始めます。 Puck を使用したプロジェクトがすでにある場合は、このセクションを読み進めても、スキップしても構いません。
Next.js または Remix を使用している場合は、プロジェクトのセットアップに公式 Puck レシピの 1 つを使用することもできます。
始めるには、ターミナルを開き、次のコマンドを実行して新しい Vite プロジェクトを作成します。
npm create vite@latest puck-global-themes -- --template react cd puck-global-themes npm install
次に、Puck パッケージをインストールします。
npm i @measured/puck --save
Vite で新しいプロジェクトを開始すると、Puck のスタイルと衝突するいくつかのデフォルト スタイルが付属します。これを修正するには、src/index.css と src/App.css を削除してから、src/main.jsx と src/App.jsx からそれらのインポートを削除します:
// main.jsx import "./index.css"; // Remove this line
// App.jsx import "./App.css"; // Remove this line
基本的なプロジェクト構造が準備できたら、src/App.jsx ファイルに移動し、その内容を以下のコードに置き換えます。これにより、見出しコンポーネントと段落コンポーネントをドラッグ アンド ドロップするための基本的な構成を使用して Puck がセットアップされます。
簡単にするために、この例ではインライン スタイルを使用していることに注意してください
// App.jsx import { Puck } from "@measured/puck"; import "@measured/puck/puck.css"; // The configs for each of your draggable components // Ideally you would pull each of these to their own files const headingConfig = { defaultProps: { title: "Title", }, fields: { title: { type: "text", }, }, render: ({ title }) => { return ( <div> <h1>{title}</h1> </div> ); }, }; const paragraphConfig = { defaultProps: { content: "This is a paragraph...", }, fields: { content: { type: "textarea", }, }, render: ({ content }) => { return ( <div> <p>{content}</p> </div> ); }, }; // The Puck configuration object const config = { components: { Heading: headingConfig, Paragraph: paragraphConfig, }, root: { render: ({ children }) => { return ( <main > <p>Finally, run the application in development mode, navigate to http://localhost:5173, and check that everything is working as expected:<br> </p> <pre class="brush:php;toolbar:false">npm run dev
すごい!構築する基盤ができたので、ユーザー向けのテーマを追加しましょう。
前に述べたように、CSS カスタム プロパティは、エディターにインタラクティブなテーマを追加するための優れた選択肢です。なぜこれが素晴らしいアプローチなのでしょうか?これは軽量で、外部依存関係を必要とせず、(ほとんどの場合) ブラウザーによってネイティブに処理されるためです。
CSS プロパティを使用して動的なテーマを追加するには、テーマ変数を必要とするコンポーネントの親でテーマ変数をプロパティとして定義する必要があります。これは、Puck のルート コンポーネントでも、エディター階層内の他の親コンポーネントでも構いません。それらを定義し、var CSS 関数を使用して必要な場所で読み取る限り、それは実際には問題ではありません。
このチュートリアルでは、ユーザーがエディターの最上位の 1 か所で見出しと段落のフォント サイズと色を設定できるように、Puck のルート コンポーネントの使用に焦点を当てます。
まず、すべての CSS 変数名を一元化するオブジェクトを定義します。これにより、一貫性が向上し、CSS のプロパティ名の入力ミスによって引き起こされるデバッグの問題というウサギの穴から解放されます。
プロのヒント: TypeScript を使用している場合は、オブジェクトの代わりに列挙型を使用して、タイプ セーフティをさらに強化できます
npm create vite@latest puck-global-themes -- --template react cd puck-global-themes npm install
次に、ルート設定を更新して、テーマ変数の小道具とフィールドを含めます。これにより、ユーザーはエディターのルート フィールド内からカスタム プロパティを直接更新できるようになります。
これを行うには、新しいルート プロパティのフィールドとそのデフォルト値を定義する必要があります。
npm i @measured/puck --save
その後、ルートの render 関数で、props からカスタム プロパティを読み取り、CSS 変数としてルート要素に渡します。
// Puck 構成オブジェクト const 構成 = { コンポーネント: { //... 既存のコンポーネント }、 根: { //... ルートフィールドの設定 render: ({ Children, fontColor,HeadingFontSize, ParagraphFontSize}) => { 戻る ( <p>エディターに移動すると、各プロパティのルート レベルに新しいフィールドが表示されるはずです。まだ視覚的なフィードバックはありませんが、エディターのルートのスタイルを調べると、フィールドに変更を加えるたびに変数が設定されていることがわかります。</p> <p><img src="https://img.php.cn/upload/article/000/000/000/173634396450671.jpg" alt="Using CSS variables to create dynamic themes in Puck"></p><h3> ステップ 3: 子コンポーネントのシェア変数にアクセスする </h3> <p>最後に、スタイルで var CSS 関数を使用して、必要なコンポーネントのテーマ変数にアクセスします。</p> <p>この例では、HeadingConfig と ParagraphConfig に追加します。<br> </p> <pre class="brush:php;toolbar:false">constHeadingConfig = { //... 見出しフィールドの設定 レンダリング: ({ タイトル }) => { 戻る ( <div> <h1> </h1><p>エディターに戻り、いくつかの見出しと段落をドラッグ アンド ドロップし、ルート レベルでフィールドを変更すると、すべての見出しと段落が更新されてそれらの変更が反映されていることがわかります。</p> <p><img src="https://img.php.cn/upload/article/000/000/000/173634396650466.jpg" alt="Using CSS variables to create dynamic themes in Puck"></p> <p>?それで終わりです!ユーザーは、ページ内のさまざまなコンポーネントにシームレスに適用されるテーマを定義できるようになりました。</p> <h3> CSS プロパティを使用することの長所と短所 </h3> <p>✅長所:</p>
❌短所:
特定の使用例に応じて、エディターのテーマをさらに進化させる方法がたくさんあります。
このチュートリアルを読んで、Puck を利用したページ ビルダーで CSS 変数を動的テーマに活用できるようになったら幸いです。オープンソースの開発者コミュニティは Puck の進化の中心であり、皆さんが作成する革新的なアプリを見るのが待ちきれません!
私たちは、まもなくリリースされる複雑なグリッドとレイアウト用の革新的なドラッグ アンド ドロップ エンジンや、間もなくリリースされる新しいプラグイン スイートなど、新しい機能を継続的に提供することで、Puck の機能をさらに推し進めることに専念しています。
Puck にインスピレーションを受けた場合、または最新の機能を常に最新の状態に保ちたい場合は、次の方法で参加できます。
以上がCSS 変数を使用して Puck で動的なテーマを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。