Truyền dữ liệu từ component Con lên component Cha không cần dùng emit trong Vue 3
Chào mọi người !!!
Mình có một thắc mắc là mình muốn truyển dữ liệu thì component con lên compent cha mà hiện tại trên docs của vue thì nó bảo chúng ta dùng emit.
Yeah cách này mình không nói
Mình cũng thứ áp dụng thì theo cách truyền props(kiểu như react) thì vẫn được - truyển props là 1 function rồi dưới còn gọi function đó
Mình muốn hỏi thì cái emit với props này khác nhau như thế nào ?
Mình có thể chọn 1 trong 2 để làm hay bắt buộc dùng emit hay emit có gì đó đặc biệt hơn không ạ?
Cảm on mọi người
1 CÂU TRẢ LỜI
Câu hỏi này khá hay 👍 Trước giờ mình làm việc với công nghệ nào thì toàn mặc định follow theo docs của họ mà ít khi đặt câu hỏi tại sao, có lẽ do mindset của mình là ông tác giả viết ra framework/library nào thì họ đã nắm rõ bản chất, nguyên tắc để làm việc với đứa con của họ hơn 😅
Anyway, trên stackoverflow cũng có 1 câu hỏi tương tự bạn có thể tham khảo: https://stackoverflow.com/questions/50532260/vue-emitting-vs-passing-function-as-props
Tóm tắt đại ý các câu trả lời là: Bố thích thế nào thì viết thế đấy... jk 😂 Mỗi kiểu đều có pros and cons, nhưng khác biệt lớn nhất chỉ là về mặt semantic, dùng kiểu emit
giúp bạn tách biệt flow rõ ràng so với kiểu props
:
- Props: cha -> con (chỉ truyền object/primitive types chứ ko truyền function)
- Emit: cha <- con (emit function, giống như bạn dùng event
onclick
trên thẻ button vậy)
Nhưng đổi lại với kiểu props
thì code sẽ tường minh hơn, vì bạn thấy được function mình truyền vào từ props được sử dụng như thế nào, dễ debug hơn.
Tùy project, preference của ông lead hoặc nếu bạn là lead thì cứ chọn 1 cái rồi cả team cùng follow thôi.
Nice
Thực ra thì em cũng mới học Vue và lúc này em cũng làm theo như hướng dẫn trên docs của họ
Vô tình em thử thì nó lại và nó works tốt.
Em cũng cảm nhận đúng là dùng kiểu emit giúp bạn tách biệt flow rõ ràng so với kiểu props
Em có hỏi mấy đứa làm vue mà cũng không để ý cái này.
Thanks anh nhé