2015-12-30 16 views
16

Tôi đang tìm một ví dụ trong việc xử lý Bubbling và Chụp trong React.js. Tôi đã tìm thấy one with JavaScript, nhưng tôi gặp khó khăn trong việc tìm kiếm tương đương với React.js.Ví dụ về Bong bóng và Chụp trong React.js

Làm cách nào để tạo một ví dụ cho Bubbling và Chụp trong React.js?

+1

kiện bọt là một khái niệm sự kiện cụ thể DOM. Toàn bộ quan điểm của React là thoát khỏi DOM. Bạn sẽ làm điều này trong React bằng cách tạo các hàm thành phần và truyền chúng xuống cho trẻ thông qua các đạo cụ – azium

+0

Nhìn vào [React events] (https://facebook.github.io/react/docs/events.html) và [React DOM event listeners ] (https://facebook.github.io/react/tips/dom-event-listeners.html) –

Trả lời

40

Việc tạo bọt và chụp đều được hỗ trợ bởi React theo cách tương tự như được mô tả bằng thông số DOM, ngoại trừ cách bạn đi về việc gắn các trình xử lý.

Bong bóng cũng đơn giản như với API DOM thông thường; chỉ cần đính kèm một handler cho một phụ huynh cuối cùng của một phần tử, và bất kỳ sự kiện kích hoạt trên yếu tố đó sẽ bong bóng để phụ huynh chừng nào nó không ngừng qua stopPropagation trên đường đi:

<div onClick={this.handleClick}> 
    <button>Click me, and my parent's `onClick` will fire!</button> 
</div> 

chụp là cũng giống như đơn giản, mặc dù nó là mentioned only briefly in the docs. Chỉ cần thêm Capture sự kiện tên tài sản xử lý:

<div onClickCapture={this.handleClickViaCapturing}> 
    <button onClick={this.handleClick}> 
    Click me, and my parent's `onClickCapture` will fire *first*! 
    </button> 
</div> 

Trong trường hợp này, nếu handleClickViaCapturing cuộc gọi stopPropagation về sự kiện này, xử lý onClick của nút sẽ không được gọi.

This JSBin phải chứng minh như thế nào chụp, bọt, và stopPropagation công trình Phản ứng: https://jsbin.com/hilome/edit?js,output

+3

Cần lưu ý điều gì, tất cả các sự kiện vani trong javascript, ví dụ từ thư viện, được gọi trước. Không có vấn đề nếu bạn đăng ký sự kiện trên Capture hoặc Bubble giai đoạn. – Jodo

+0

Nếu tôi muốn điều ngược lại thì sao? Nếu tôi đang có 'onClick' cho phụ huynh và tôi muốn gọi hàm đó ngay cả khi con được bấm? – Dane

+1

@Dane Đó là sự kiện bình thường, như được mô tả trong phần đầu tiên của hai ví dụ ở trên (onClick của cha mẹ div được kích hoạt khi bạn nhấp vào nút con). –