CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN này thực hiện chức năng [Slot] trong ETS của ArkUI và được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này thì nhớ like nhé.
![Triển khai chức năng [Slot] trong ETS của ArkUI Triển khai chức năng [Slot] trong ETS của ArkUI](../../../uploads/allimg/211207/225910N40-0.png)
ETS đã được phát hành được một thời gian và nhiều bạn bè đã tạo ra nhiều trang đẹp thông qua ETS. Tuy nhiên, khi kiểm tra các thành phần và API của ETS, tôi thấy rằng phiên bản ETS hiện tại không có chức năng slot. Sau một thời gian tìm hiểu, cuối cùng chúng tôi đã tìm ra một phương pháp cong để triển khai chức năng khe cắm, cho phép tách rời các thành phần.
slot là gì
Bạn bè biết slot có thể bỏ qua.
Định nghĩa chính thức của vue là: Slot là một tập hợp các API phân phối nội dung. Khi thành phần này được hiển thị, nó sẽ được thay thế bằng "Hồ sơ của bạn". Khe có thể chứa bất kỳ mã mẫu nào.
Theo thuật ngữ thông thường, vị trí này giống như một trình giữ chỗ, phân phối nội dung bên ngoài thành phần tới thành phần đó thông qua API.
Các bước thực hiện
Xác định một lớp vị trí
Nó nhằm mục đích cung cấp một vị trí được đặt tên, do đó, một lớp vị trí được xác định cho việc ủy quyền tiếp theo. Đây không phải là điểm quan trọng trong việc thực hiện và không cần phải xác định.
- lớp Slot{
- tên:chuỗi="mặc định"
- Người xây dựng:bất kì
-
- người xây dựng (tên:string,người xây dựng:bất kì){
- cái này.tên=tên;
- this.builder=người xây dựng
- }
- }
Tạo một thành phần CompA
Tạo một thành phần tùy chỉnh CompA và cung cấp khả năng xử lý cho hai vị trí được đặt tên, một vị trí mặc định và một vị trí2.
- @Thành phần
- cấu trúc CompA{
- @State văn bản:chuỗi=""
- @Dữ liệu trạng thái:string[]=[]
- @State slot:Slot=new Slot(vô giá trị)
- xây dựng(){
- Cột(){
- Cột(){
- Chữ("Nội dung trong thành phần CompA")
- .Màu chữ("#00F")
- .fontSize(16)
- .lề(10)
- }
- Cột(){
- Hàng ngang(){
- nếu(this.slot.tên=="mặc định"){
- Đối với mỗi(["Đây là vị trí mặc định [mặc định]"],
- this.slot.builder)
- }
- nếu(this.slot.tên=="khe cắm 2"){
- Đối với mỗi(dữ liệu này,
- this.slot.builder)
- }
- }
- }
- }
- }
- }
Các thành phần để xây dựng một trang
Xây dựng trang Chỉ mục, tạo hai Builders bolder1 và builder2 trong trang, đồng thời khởi tạo hai lớp Slot slot1 và slot2, đồng thời gán builder1 và builder2 cho slot1 và slot2 tương ứng.
Hiển thị một đoạn văn bản thông qua thành phần Văn bản trong builder1.
Hệ thống liên lạc nội bộ Builder2 xây dựng một mô hình phức tạp hơn một chút, thiết lập văn bản và mã QR.
- @Lối vào
- @Thành phần
- cấu trúc Mục lục {
- @Builder builder1(chuỗi:chuỗi){
- Văn bản(chuỗi).Kích thước phông chữ(18).Màu phông chữ("#f00")
- }
-
- @Builder builder2(obj:bất kì){
- Cột(){
- Hàng ngang(){
- Văn bản(obj.title).fontSize(16)
- }
- Hàng ngang(){
- QRCode(obj.title).width(100).height(100)
- }.lề(10)
- }.lề(10)
- }
-
- slot1:Slot=mới Slot(this.builder1)
- slot2:Slot=new Slot(this.builder2,"khe cắm 2")
-
- xây dựng() {
- Flex({ hướng: FlexDirection.Cột, căn chỉnh mục: ItemAlign.Center, căn chỉnh nội dung: FlexAlign.Center }) {
- Cột(){
- Máy tínhA(){
- Chữ("Điều này sẽ không được hiển thị").fontSize(24)
- }
- CompA({khe:khe này.khe1})
- CompA({slot:this.slot2,data:[{title:"Đây là khe thứ hai"},{tiêu đề:"http://www.baidu.com"}]})
- }
- }
- .chiều rộng('100%')
- .chiều cao('100%')
- }
- }
Hiệu ứng hiển thị:
Như bạn có thể thấy trong hình, vị trí thực của builder1 và builder2 nằm trong khe của CompA.
tập trung
Như đã đề cập ở trên, lớp Slot không cần phải tạo vì nguyên tắc triển khai là thông qua ForEach+Builder và Builder cũng có thể được liên kết với thành phần thông qua các hàm.
Hãy xem xét ForEach trong tài liệu chính thức:
Tất cả các mã đều mang tính chất tham khảo
- @Lối vào
- @Thành phần
- cấu trúc Mục lục {
- @Builder builder1(chuỗi:chuỗi){
- Văn bản(chuỗi).Kích thước phông chữ(18).Màu phông chữ("#f00")
- }
- @Builder builder2(obj:bất kì){
- Cột(){
- Hàng ngang(){
- Văn bản(obj.title).fontSize(16)
- }
- Hàng ngang(){
- QRCode(obj.title).width(100).height(100)
- }.lề(10)
- }.lề(10)
- }
- slot1:Slot=mới Slot(this.builder1)
- slot2:Slot=new Slot(this.builder2,"khe cắm 2")
- xây dựng() {
- Flex({ hướng: FlexDirection.Cột, căn chỉnh mục: ItemAlign.Center, căn chỉnh nội dung: FlexAlign.Center }) {
- Cột(){
- Máy tínhA(){
- Chữ("Điều này sẽ không được hiển thị").fontSize(24)
- }
- CompA({khe:khe này.khe1})
- CompA({slot:this.slot2,data:[{title:"Đây là khe thứ hai"},{tiêu đề:"http://www.baidu.com"}]})
- }
- }
- .chiều rộng('100%')
- .chiều cao('100%')
- }
- }
-
- @Thành phần
- cấu trúc CompA{
- @State văn bản:chuỗi=""
- @Dữ liệu trạng thái:string[]=[]
- @State slot:Slot=new Slot(vô giá trị)
- xây dựng(){
- Cột(){
- Cột(){
- Chữ("Nội dung trong thành phần CompA")
- .Màu chữ("#00F")
- .fontSize(16)
- .lề(10)
- }
- Cột(){
- Hàng ngang(){
- nếu(this.slot.tên=="mặc định"){
- Đối với mỗi(["Đây là vị trí mặc định [mặc định]"],
- this.slot.builder)
- }
- nếu(this.slot.tên=="khe cắm 2"){
- Đối với mỗi(dữ liệu này,
- this.slot.builder)
- }
- }
- }
- }
- }
- }
- lớp Slot{
- tên:chuỗi="mặc định"
- Người xây dựng:bất kì
- người xây dựng (người xây dựng:bất kì,tên?:sợi dây){
- tên && (cái này.tên=tên);
- this.builder=người xây dựng
- }
- }
Link gốc: https://harmonyos.51cto.com.
Cuối cùng, bài viết về cách triển khai chức năng [Slot] trong ETS của ArkUI kết thúc tại đây. Nếu bạn muốn biết thêm về cách triển khai chức năng [Slot] trong ETS của ArkUI, vui lòng tìm kiếm bài viết CFSDN. ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!