واجد شرایط دسترسی ویژگی مؤلفه سفارشی Hongmeng Next

Summarize this content to 400 words in Persian Lang در توسعه Hongmeng Next، ArkTS قوانین تأیید خاصی برای واجد شرایط دسترسی خصوصی/عمومی/محافظت شده دارد که برای متغیرهای عضو مؤلفههای سفارشی استفاده میشود، اطلاعات گزارش مربوطه تولید میشود.
1. مروری بر محدودیت های استفاده
(1) محدودیت های مربوط به اصلاح خصوصی
برای @State/@prop/@Provide/@BuilderParam/متغیرهای عضو معمولی (متغیرهای معمولی که شامل به روز رسانی نمیشوند)، هنگامی که از اصلاح خصوصی استفاده میشود، تخصیص و ارسال پارامتر در طول ساخت مولفه سفارشی مجاز نیست، در غیر این صورت وجود خواهد داشت. یک اعلان گزارش زنگ تلفیقی باشد. ### (2) محدودیت های مربوط به اصلاح عمومی
برای متغیرهای @StorageLink/@StorageProp/@LocalStorageLink/@LocalStorageProp/@Consume، هنگام استفاده از اصلاح عمومی، یک اعلان گزارش هشدار تلفیقی وجود خواهد داشت. ### (3) محدودیت در دکوراسیون همزمان دکوراتورهای خصوصی و خاص
برای متغیرهای @Link/@ObjectLink، هنگام استفاده از اصلاح خصوصی، یک اعلان گزارش هشدار کامپایل وجود خواهد داشت. ### (4) از محدودیت های اصلاح محافظت شده است
از آنجایی که ساختار قابلیت ارث بردن را ندارد، هنگامی که همه متغیرهای بالا با محافظت شده اصلاح شوند، یک هشدار ثبت گزارش وجود خواهد داشت. ### (5) @Require و خصوصی محدودیت ها را همزمان تغییر دهید
وقتی @Require و private متغیرهای عضو @State/@prop/@Provide/@BuilderParam/قابلیت عضو ساختار کامپوننت سفارشی را همزمان تغییر میدهند (متغیرهای معمولی که مستلزم بهروزرسانی نیستند)، یک هشدار گزارش کامپایل وجود خواهد داشت.
2. نمونه هایی از سناریوهای استفاده نادرست
(1) خصوصی و @State/@prop/@Provide/@BuilderParam به طور همزمان اصلاح می شوند
نمونه کد
@Entry
@Component
struct AccessRestrictions {
@Builder
buildTest() {
Text(“Parent builder”)
}
build() {
Column() {
ComponentsChild({
state_value: “Hello”,
prop_value: “Hello”,
provide_value: “Hello”,
builder_value: this.buildTest,
regular_value: “Hello”
})
}
.width(‘100%’)
}
}
@Component
struct ComponentsChild {
@State private state_value: string = “Hello”;
@Prop private prop_value: string = “Hello”;
@Provide private provide_value: string = “Hello”;
@BuilderParam private builder_value: () => void = this.buildTest;
private regular_value: string = “Hello”;
@Builder
buildTest() {
Text(“Child builder”)
}
build() {
Column() {
Text(“Hello”)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
کامپایل گزارش هشدار
Property'state_value' خصوصی است و نمی توان از طریق سازنده کامپوننت مقداردهی اولیه کرد.
ویژگی 'prop_value' خصوصی است و نمی توان آن را از طریق سازنده کامپوننت مقداردهی کرد.
ویژگی 'provide_value' خصوصی است و نمی توان از طریق سازنده کامپوننت مقداردهی اولیه کرد.
ویژگی “builder_value” خصوصی است و نمی توان آن را از طریق سازنده کامپوننت مقداردهی اولیه کرد.
Property'regular_value' خصوصی است و نمی توان از طریق سازنده کامپوننت مقداردهی اولیه کرد.
(2) عمومی و @StorageLink/@StorageProp/@LocalStorageLink/@LocalStorageProp/@Consume همزمان اصلاح میشوند
نمونه کد
@Entry
@Component
struct AccessRestrictions {
@Provide consume_value: string = “Hello”;
build() {
Column() {
ComponentChild()
}
.width(‘100%’)
}
}
@Component
struct ComponentChild {
@LocalStorageProp(“sessionLocalProp”) public local_prop_value: string = “Hello”;
@LocalStorageLink(“sessionLocalLink”) public local_link_value: string = “Hello”;
@StorageProp(“sessionProp”) public storage_prop_value: string = “Hello”;
@StorageLink(“sessionLink”) public storage_link_value: string = “Hello”;
@Consume public consume_value: string;
build() {
Column() {
Text(“Hello”)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
کامپایل گزارش هشدار
ویژگی “local_prop_value” را نمی توان با @LocalStorageProp و عمومی تزئین کرد.
ویژگی “local_link_value” را نمی توان با @LocalStorageLink و عمومی تزئین کرد.
Property'storage_prop_value' را نمی توان با @StorageProp و عمومی تزئین کرد.
Property'storage_link_value' را نمی توان با @StorageLink و عمومی تزئین کرد.
اموال “consume_value” را نمی توان با @Consume و عمومی تزئین کرد.
(3) خصوصی و @Link/@ObjectLink به طور همزمان اصلاح می شوند
نمونه کد
@Entry
@Component
struct AccessRestrictions {
@State link_value: string = “Hello”;
@State objectLink_value: ComponentObj = new ComponentObj();
build() {
Column() {
ComponentChild({link_value: this.link_value, objectLink_value: this.objectLink_value})
}
.width(‘100%’)
}
}
@Observed
class ComponentObj {
count: number = 0;
}
@Component
struct ComponentChild {
@Link private link_value: string;
@ObjectLink private objectLink_value: ComponentObj;
build() {
Column() {
Text(“Hello”)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
کامپایل گزارش زنگ هشدار
دارایی 'link_value' را نمی توان با لینک @ و خصوصی تزئین کرد.
ویژگی “objectLink_value” را نمی توان با @ObjectLink و خصوصی تزئین کرد.
(4) اصلاح محافظت شده
نمونه کد
@Entry
@Component
struct AccessRestrictions {
build() {
Column() {
ComponentChild({regular_value: “Hello”})
}
.width(‘100%’)
}
}
@Component
struct ComponentChild {
protected regular_value: string = “Hello”;
build() {
Column() {
Text(“Hello”)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
کامپایل گزارش هشدار
ویژگی های عضو یک ساختار را نمی توان محافظت کرد.
(5) خصوصی، @Require و @State/@prop/@Provide/@BuilderParam به طور همزمان اصلاح می شوند
نمونه کد
@Entry
@Component
struct AccessRestrictions {
build() {
Column() {
ComponentChild({prop_value: “Hello”})
}
.width(‘100%’)
}
}
@Component
struct ComponentChild {
@Require @Prop private prop_value: string = “Hello”;
build() {
Column() {
Text(“Hello”)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
کامپایل گزارش هشدار
اموال “prop_value” را نمی توان با هر دو @Require و private تزئین کرد.
ویژگی 'prop_value' خصوصی است و نمی توان آن را از طریق سازنده کامپوننت مقداردهی کرد.
هنگامی که توسعه دهندگان از اجزای سفارشی Hongmeng Next استفاده می کنند، باید قوانین استفاده از این واجد شرایط دسترسی را دنبال کنند تا از هشدارهای جمع آوری به دلیل استفاده نامنظم جلوگیری کنند و از ساخت و اجرای صحیح اجزاء اطمینان حاصل کنند. در عین حال، لطفاً توجه داشته باشید که این قوانین از نسخه 12 API پشتیبانی می شوند و باید مطابق با نسخه واقعی API در طول فرآیند توسعه پردازش شوند.
در توسعه Hongmeng Next، ArkTS قوانین تأیید خاصی برای واجد شرایط دسترسی خصوصی/عمومی/محافظت شده دارد که برای متغیرهای عضو مؤلفههای سفارشی استفاده میشود، اطلاعات گزارش مربوطه تولید میشود.
1. مروری بر محدودیت های استفاده
(1) محدودیت های مربوط به اصلاح خصوصی
- برای @State/@prop/@Provide/@BuilderParam/متغیرهای عضو معمولی (متغیرهای معمولی که شامل به روز رسانی نمیشوند)، هنگامی که از اصلاح خصوصی استفاده میشود، تخصیص و ارسال پارامتر در طول ساخت مولفه سفارشی مجاز نیست، در غیر این صورت وجود خواهد داشت. یک اعلان گزارش زنگ تلفیقی باشد. ### (2) محدودیت های مربوط به اصلاح عمومی
- برای متغیرهای @StorageLink/@StorageProp/@LocalStorageLink/@LocalStorageProp/@Consume، هنگام استفاده از اصلاح عمومی، یک اعلان گزارش هشدار تلفیقی وجود خواهد داشت. ### (3) محدودیت در دکوراسیون همزمان دکوراتورهای خصوصی و خاص
- برای متغیرهای @Link/@ObjectLink، هنگام استفاده از اصلاح خصوصی، یک اعلان گزارش هشدار کامپایل وجود خواهد داشت. ### (4) از محدودیت های اصلاح محافظت شده است
- از آنجایی که ساختار قابلیت ارث بردن را ندارد، هنگامی که همه متغیرهای بالا با محافظت شده اصلاح شوند، یک هشدار ثبت گزارش وجود خواهد داشت. ### (5) @Require و خصوصی محدودیت ها را همزمان تغییر دهید
- وقتی @Require و private متغیرهای عضو @State/@prop/@Provide/@BuilderParam/قابلیت عضو ساختار کامپوننت سفارشی را همزمان تغییر میدهند (متغیرهای معمولی که مستلزم بهروزرسانی نیستند)، یک هشدار گزارش کامپایل وجود خواهد داشت.
2. نمونه هایی از سناریوهای استفاده نادرست
(1) خصوصی و @State/@prop/@Provide/@BuilderParam به طور همزمان اصلاح می شوند
- نمونه کد
@Entry
@Component
struct AccessRestrictions {
@Builder
buildTest() {
Text("Parent builder")
}
build() {
Column() {
ComponentsChild({
state_value: "Hello",
prop_value: "Hello",
provide_value: "Hello",
builder_value: this.buildTest,
regular_value: "Hello"
})
}
.width('100%')
}
}
@Component
struct ComponentsChild {
@State private state_value: string = "Hello";
@Prop private prop_value: string = "Hello";
@Provide private provide_value: string = "Hello";
@BuilderParam private builder_value: () => void = this.buildTest;
private regular_value: string = "Hello";
@Builder
buildTest() {
Text("Child builder")
}
build() {
Column() {
Text("Hello")
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
-
کامپایل گزارش هشدار
- Property'state_value' خصوصی است و نمی توان از طریق سازنده کامپوننت مقداردهی اولیه کرد.
- ویژگی 'prop_value' خصوصی است و نمی توان آن را از طریق سازنده کامپوننت مقداردهی کرد.
- ویژگی 'provide_value' خصوصی است و نمی توان از طریق سازنده کامپوننت مقداردهی اولیه کرد.
- ویژگی “builder_value” خصوصی است و نمی توان آن را از طریق سازنده کامپوننت مقداردهی اولیه کرد.
- Property'regular_value' خصوصی است و نمی توان از طریق سازنده کامپوننت مقداردهی اولیه کرد.
(2) عمومی و @StorageLink/@StorageProp/@LocalStorageLink/@LocalStorageProp/@Consume همزمان اصلاح میشوند
- نمونه کد
@Entry
@Component
struct AccessRestrictions {
@Provide consume_value: string = "Hello";
build() {
Column() {
ComponentChild()
}
.width('100%')
}
}
@Component
struct ComponentChild {
@LocalStorageProp("sessionLocalProp") public local_prop_value: string = "Hello";
@LocalStorageLink("sessionLocalLink") public local_link_value: string = "Hello";
@StorageProp("sessionProp") public storage_prop_value: string = "Hello";
@StorageLink("sessionLink") public storage_link_value: string = "Hello";
@Consume public consume_value: string;
build() {
Column() {
Text("Hello")
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
-
کامپایل گزارش هشدار
- ویژگی “local_prop_value” را نمی توان با @LocalStorageProp و عمومی تزئین کرد.
- ویژگی “local_link_value” را نمی توان با @LocalStorageLink و عمومی تزئین کرد.
- Property'storage_prop_value' را نمی توان با @StorageProp و عمومی تزئین کرد.
- Property'storage_link_value' را نمی توان با @StorageLink و عمومی تزئین کرد.
- اموال “consume_value” را نمی توان با @Consume و عمومی تزئین کرد.
(3) خصوصی و @Link/@ObjectLink به طور همزمان اصلاح می شوند
- نمونه کد
@Entry
@Component
struct AccessRestrictions {
@State link_value: string = "Hello";
@State objectLink_value: ComponentObj = new ComponentObj();
build() {
Column() {
ComponentChild({link_value: this.link_value, objectLink_value: this.objectLink_value})
}
.width('100%')
}
}
@Observed
class ComponentObj {
count: number = 0;
}
@Component
struct ComponentChild {
@Link private link_value: string;
@ObjectLink private objectLink_value: ComponentObj;
build() {
Column() {
Text("Hello")
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
-
کامپایل گزارش زنگ هشدار
- دارایی 'link_value' را نمی توان با لینک @ و خصوصی تزئین کرد.
- ویژگی “objectLink_value” را نمی توان با @ObjectLink و خصوصی تزئین کرد.
(4) اصلاح محافظت شده
- نمونه کد
@Entry
@Component
struct AccessRestrictions {
build() {
Column() {
ComponentChild({regular_value: "Hello"})
}
.width('100%')
}
}
@Component
struct ComponentChild {
protected regular_value: string = "Hello";
build() {
Column() {
Text("Hello")
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
-
کامپایل گزارش هشدار
- ویژگی های عضو یک ساختار را نمی توان محافظت کرد.
(5) خصوصی، @Require و @State/@prop/@Provide/@BuilderParam به طور همزمان اصلاح می شوند
- نمونه کد
@Entry
@Component
struct AccessRestrictions {
build() {
Column() {
ComponentChild({prop_value: "Hello"})
}
.width('100%')
}
}
@Component
struct ComponentChild {
@Require @Prop private prop_value: string = "Hello";
build() {
Column() {
Text("Hello")
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
}
}
-
کامپایل گزارش هشدار
- اموال “prop_value” را نمی توان با هر دو @Require و private تزئین کرد.
- ویژگی 'prop_value' خصوصی است و نمی توان آن را از طریق سازنده کامپوننت مقداردهی کرد.
هنگامی که توسعه دهندگان از اجزای سفارشی Hongmeng Next استفاده می کنند، باید قوانین استفاده از این واجد شرایط دسترسی را دنبال کنند تا از هشدارهای جمع آوری به دلیل استفاده نامنظم جلوگیری کنند و از ساخت و اجرای صحیح اجزاء اطمینان حاصل کنند. در عین حال، لطفاً توجه داشته باشید که این قوانین از نسخه 12 API پشتیبانی می شوند و باید مطابق با نسخه واقعی API در طول فرآیند توسعه پردازش شوند.