Tôi có một rất đơn giản phản ứng thành phần:Tại sao nút ref sẽ được nhấp 3 lần?
import React, {Component} from 'react';
class Hello extends Component {
render() {
return <div>
<h1>Hello Freewind</h1>
<div>
<button ref="button1" onClick={() => alert('1')}>Click 1</button>
<button ref="button2" onClick={() => alert('2')}>Click 2</button>
</div>
<div>
<button onClick={this._clickBoth.bind(this)}>Click both</button>
</div>
</div>;
}
_clickBoth() {
this.refs.button1.click();
this.refs.button2.click();
}
}
export default Hello;
Khi bạn bấm vào "Click cả" nút, các "Click 1" và "Click 2" sẽ được bấm programatically. Điều kỳ lạ là, tôi sẽ thấy 6 cảnh báo:
1
2
1
2
1
2
nào nên
1
2
Nhưng nếu tôi loại bỏ một trong hai dòng _clickBoth
, nói rằng, loại bỏ this.refs.button2.click();
, nó sẽ behaive một cách chính xác và chỉ hiển thị một cảnh báo:
1
Bạn có thể xem và thử dự án ở đây: https://github.com/js-demos/react-ref-demo
Bạn có thể thiết lập bản trình diễn trên jsfiddle hoặc cái gì đó không? – Chris
Tôi đã sao chép sự cố. Thú vị thật đấy. –
Một điều kỳ lạ khác là các sự kiện 'click' tích luỹ theo cấp số nhân tùy thuộc vào số lần ref bạn mô phỏng sự kiện trên. –