2017-03-15 37 views
9

Tôi đã quen với việc sử dụng bus sự kiện toàn cầu để xử lý các phương thức thành phần chéo. Ví dụ:Tôi nên xử lý các sự kiện ở Vuex như thế nào?

var bus = new Vue(); 
... 
//Component A 
bus.$emit('DoSomethingInComponentB'); 
... 
//Component B 
bus.$on('DoSomethingInComponentB', function(){ this.doSomething() }) 

Tuy nhiên, tôi đang xây dựng một dự án lớn hơn, yêu cầu quản lý nhà nước toàn cầu. Đương nhiên, tôi muốn sử dụng Vuex.

Trong khi mẫu xe buýt này hoạt động với Vuex, có vẻ như sai. Tôi đã thấy Vuex được đề xuất là một thay thế thay thế cho mẫu này.

Có cách nào để chạy các phương pháp trong các thành phần từ Vuex không? Làm thế nào tôi nên tiếp cận điều này?

Trả lời

12

Vuexevent bus là hai điều khác nhau theo nghĩa là vuex quản lý trạng thái trung tâm của ứng dụng trong khi bus sự kiện được sử dụng để giao tiếp giữa các thành phần khác nhau của ứng dụng.

Bạn có thể thực hiện hành động đột biến hoặc hành động từ một thành phần và cũng tăng sự kiện từ hành động của vuex.

Khi docs nói:

Hoạt động tương tự như đột biến, sự khác biệt được rằng:

  • Thay vì biến đổi trạng thái, hành động cam kết đột biến.
  • Hành động có thể chứa các hoạt động không đồng bộ tùy ý.

Vì vậy, bạn có thể tăng sự kiện bằng xe buýt từ hành động và bạn có thể gọi hành động từ bất kỳ phương pháp thành phần nào.

+1

Vì vậy, sử dụng bus và vuex cùng một lúc là mẫu OK? Dường như mâu thuẫn với những gì được nói trong tài liệu, nhưng tôi sẽ cuộn với nó ngay bây giờ :) Cảm ơn! –

+0

Có, theo ý kiến ​​của tôi, bạn có thể sử dụng cả hai cùng nhau tùy thuộc vào trường hợp sử dụng. Một khi có thể thay thế tất cả chức năng của Event Bus của Vuex, nhưng đối với một trường hợp sử dụng đơn giản (giao tiếp giữa hai thành phần, phương thức kích hoạt của thành phần khác, vv), bạn có thể sử dụng bus sự kiện, trong khi đó bạn cần một biến bởi nhiều thành phần tất cả sửa đổi nó, bạn có thể sử dụng vuex. – Saurabh

+0

@ Blue_Dragon360 Tôi đã đấu tranh với cùng một vấn đề, sau đó tôi đi qua bài đăng này về cơ bản nói cùng một điều như Saurabh. https://forum.vuejs.org/t/bus-vs-vuex/6679 –

Các vấn đề liên quan