برنامه نویسی

اجزای وب لایتنینگ: اجزای تو در تو سفارشی

Lightning Web Runtime یا به اختصار LWR در بهار 21 (نسخه 51.0) منتشر شد. حتی قبل از انتشار LWR، اکثر توسعه دهندگان رویای توانایی ساخت اجزای تو در تو سفارشی را داشتند. می‌توانیم ببینیم که مؤلفه‌های OOTB (خارج از جعبه) می‌توانند از آنها استفاده کنند (به مؤلفه Tabs مراجعه کنید).

Salesforce اخیراً توانایی ساخت LWCهای سفارشی با کودک را منتشر کرده است <slot/>‘s، برای اجازه دادن به تودرتوی اجزا. LWC های تو در تو به شما این امکان را می دهند که چندین مؤلفه را با هم در یک جزء واحد ترکیب کنید. اجزای کودک چرخه زندگی خود را حفظ می کنند و می توانند از طریق رویدادها با یکدیگر ارتباط برقرار کنند و ایجاد برنامه های انعطاف پذیر و پویا را آسان می کند.

قبل از ادامه، انجمن‌های مبتنی بر Aura (متاسفانه) پشتیبانی نمی‌شوند. بنابراین اگر در حال حاضر از آنها استفاده می کنید، ممکن است زمان آن رسیده است که به LWR تغییر دهید.

مثال کد

صحبت کافی است، بیایید وارد کد شویم و ببینیم که جادو اتفاق می افتد.

HTML

ما با ایجاد قالب HTML برای نگه داشتن ما شروع می کنیم <slot/>‘s

<template>
  <template if:false={isAura}>
    <div class="container">
      <div>
        <slot name="region1"></slot>
      </div>
      <div>
        <slot name="region2"></slot>
      </div>
      <div>
        <slot name="region3"></slot>
      </div>
    </div>
  </template>
</template>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

جاوا اسکریپت

حالا اجازه دهید نگاهی به جاوا اسکریپت بیندازیم. بخش مهم (یا جادو) در اینجا این است @slot تعاریف در نظر مستقیماً بالای صادرات LWC. بدون این تعاریف، اجزای پویا کار نمی کنند.

این isAura بررسی همچنین اطمینان حاصل می کند که این مؤلفه هنگام استفاده از یک جامعه مبتنی بر Aura، هشداری را در سازنده تجربه نشان می دهد.

import { LightningElement } from 'lwc'

/**
 * @slot region1
 * @slot region2
 * @slot region3
 */
export default class NestedLWCs extends LightningElement {
  get isAura() {
    return window['$A'] !== undefined && window['$A'] !== null
  }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

فراداده XML

مطمئن شوید که .xml فایل به گونه ای تنظیم شده است که در سازنده تجربه موجود باشد. مقادیر کلیدی در حال تنظیم هستند isExposed به true و از جمله هر دو lightningCommunity__Page و lightningCommunity__Default مانند targets.

<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
  <apiVersion>57.0</apiVersion>
  <isExposed>true</isExposed>
  <masterLabel>Nested LWCs</masterLabel>
  <description>Nested LWC magic</description>
  <targets>
    <target>lightningCommunity__Page</target>
    <target>lightningCommunity__Default</target>
  </targets>
</LightningComponentBundle>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سازنده تجربه

اکنون اجازه دهید Experience Builder را باز کنیم و LWC سفارشی خود را در عمل ببینیم.

Experience Builder: LWC سفارشی ما را به صفحه بکشید

ما همچنین می‌توانیم کامپوننت‌ها را درون اجزای تودرتوی دیگر قرار دهیم. من از هیچ محدودیتی در اینجا آگاه نیستم. من توانستم تا 10 سطح را بدون هیچ مشکلی در اعماق قرار دهم، توجه داشته باشم که این پایان نامه ها LWC های بسیار آزمایشی هستند. LWCهای پیچیده تر ممکن است بر عملکرد تأثیر بگذارند.

Experience Builder: LWC سفارشی ما را به صفحه بکشید

بسته بندی

به طور خلاصه، LWC های تو در تو، راه قدرتمند و انعطاف پذیری را برای توسعه دهندگان فراهم می کند تا اجزای سفارشی ایجاد کنند که می تواند از چندین مؤلفه دیگر تشکیل شده باشد، که ساخت برنامه های پویا و قابل استفاده مجدد را در پلتفرم Experience Cloud آسان تر می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا