Vue 2.7 component props declaration, validation, and immutability.
Props
Props là cách cha truyền dữ liệu xuống con. Trong AEM, đây là điểm nối chính: dữ liệu từ Sling Model (qua data attribute) đi vào props của root component, rồi truyền tiếp xuống các child component.
Khai báo props
Khai báo dạng object để có kiểu và validation. Tránh dạng mảng tên đơn thuần trong code thực tế.
Default của Array/Object phải là factory function (trả về giá trị mới), tránh share tham chiếu giữa các instance.
Truyền props
Không có :, giá trị luôn là string. Cần Number, Boolean, Array, Object thì phải v-bind.
camelCase vs kebab-case
Khai báo prop bằng camelCase trong JS, dùng kebab-case trong template HTML.
Prop types
Validation custom:
One-way data flow
Props chỉ chảy một chiều từ cha xuống con. Cha đổi thì con cập nhật, nhưng con KHÔNG được sửa prop. Sửa prop trực tiếp gây warning và dễ tạo bug khó lần.
Hai trường hợp hay muốn sửa prop và cách xử lý đúng:
Cần đổi giá trị nguồn thì emit event báo cha (xem note Custom Events).
Non-prop attributes
Attribute truyền vào component nhưng không khai báo trong props (vd class, id, data-*) sẽ tự gắn vào phần tử gốc của component. Hữu ích khi truyền class hoặc thuộc tính accessibility xuống.
Tips cho AEM
Root component nhận props từ JSON do Sling Model serialize. Đặt tên prop khớp key trong JSON (không nhất thiết khớp tên field Java).