Tôi muốn có một cuộc gọi lại được gọi trên thành phần react.js của tôi khi phần tử DOM (bao gồm tất cả các nút con) thực sự được tải trên trang và sẵn sàng. Cụ thể, tôi có hai thành phần mà tôi muốn hiển thị cùng kích thước, chọn tối đa bất kỳ thành phần nào có kích thước tự nhiên lớn hơn. Có vẻ như componentDidMount
không thực sự là những gì tôi muốn bởi vì nó chỉ được gọi một lần cho mỗi thành phần, nhưng tôi muốn gọi lại của tôi được gọi lại bất cứ khi nào thành phần kết thúc hiển thị. Tôi nghĩ rằng tôi có thể thêm sự kiện onLoad
vào phần tử DOM cấp cao nhất, nhưng tôi đoán rằng chỉ áp dụng cho một số yếu tố nhất định, như <body>
và <img>
.Gọi lại khi DOM được tải trong reac.js
Trả lời
Có vẻ như kết hợp của componentDidMount
và componentDidUpdate
sẽ hoàn thành công việc. Việc đầu tiên được gọi sau khi hiển thị ban đầu, khi DOM có sẵn, thứ hai được gọi sau khi bất kỳ kết quả hiển thị tiếp theo nào, sau khi DOM cập nhật khả dụng. Trong trường hợp của tôi, cả hai đều yêu cầu họ ủy nhiệm một chức năng chung để làm điều tương tự.
Tôi đã áp dụng componentDidUpdate vào bảng để có tất cả các cột có cùng chiều cao. nó hoạt động giống như trên $ (window) .load() trong jquery.
ví dụ:
componentDidUpdate: function() {
$(".tbl-tr").height($(".tbl-tr ").height());
}
Thêm nghe onload trong componentDidMount
class Comp1 extends React.Component {
constructor(props) {
super(props);
this.handleLoad = this.handleLoad.bind(this);
}
componentDidMount() {
window.addEventListener('load', this.handleLoad);
}
handleLoad() {
$("myclass") // $ is available here
}
}
Trong trình duyệt hiện đại, nó phải là như
try() {
if (!$("#element").size()) {
window.requestAnimationFrame(try);
} else {
// do your stuff
}
};
componentDidMount(){
this.try();
}
heh, ngoại trừ trình duyệt hiện đại không sử dụng jquery = P. Đó là mẹo hay về cách sử dụng khung hình động mặc dù giả sử nó nên được cập nhật trực tiếp. – brianmearns
- 1. gọi lại jquery sau khi tất cả ảnh trong dom được tải?
- 2. khi iframe được tải lại?
- 3. Thêm gọi lại vào phần tử DOM được tạo trong lớp con của web.list.Column
- 4. AngularJS: gọi lại sau khi kết xuất (làm việc với DOM sau khi kết xuất)
- 5. Gọi lại sau khi ajax tải một tab
- 6. UICollectionView - nhận cuộc gọi lại khi tải hoàn tất?
- 7. gọi lại tải lại trên hình ảnh không được gọi là ie8
- 8. Gọi một cuộc gọi lại từ mã .NET được quản lý (khi tải mã được quản lý bằng COM)
- 9. không được đặt lại khi tải lại trang
- 10. Khi nào thì gọi lại React.render()?
- 11. Chúng ta có nên đợi DOM tải trước khi gọi ko.applyBindings
- 12. thực thi javascript trước khi dom đang tải
- 13. Gọi lại không được gọi
- 14. Gọi lại Javascript để biết khi nào một hình ảnh được tải
- 15. JQuery Mobile: inline data-role = "trang" javascript được giữ lại khi trang được phát hành từ DOM?
- 16. Chèn jQuery sau khi gọi lại?
- 17. Đôi khi không nhận được gọi lại onCreateLoader sau khi gọi initLoader
- 18. Làm cách nào để gọi một cuộc gọi lại JS khi tải lên tệp hoàn tất?
- 19. Tải lại trang khi được truy cập bằng cách nhấp vào nút Quay lại trong Firefox
- 20. Truy cập đối tượng DOM sau khi gọi AJAX?
- 21. Tải xuống tệp hoàn tất gọi lại
- 22. Tôi có thể di chuyển đối tượng Flash trong DOM mà không cần tải lại không?
- 23. gọi lại jquery được gọi nhiều lần
- 24. Làm thế nào tôi có thể ngừng tải lại IFrame khi tôi thay đổi vị trí của nó trong DOM?
- 25. Nguyên mẫu JS nuốt lỗi trong dom: nạp, và gọi lại ajax?
- 26. javascript/dom - đắt tiền như thế nào khi tạo và sắp xếp lại các nút dom?
- 27. SpriteBatch: "Bắt đầu không thể được gọi lại cho đến khi End được gọi thành công."
- 28. gọi lại jquery khi tải hình ảnh khi thay đổi src
- 29. Chức năng Javascript đang được gọi khi tải trang
- 30. Tại sao sigprocmask được gọi khi gọi đến hệ thống gọi lại?
Thật không may, 'componentDidUpdate' không kêu gọi ban đầu hiển thị, do đó, chức năng của bạn sẽ không được áp dụng cho đến khi đạo cụ hoặc tiểu bang được _changed_: https://reactjs.org/docs/react-comp onent.html # componentdidupdate – brianmearns