2013-06-25 80 views
5

Tôi đang cố gắng hiểu cách bối cảnh hoạt động trong khung công tác Phản ứng JS của Facebook.Bối cảnh trong khuôn khổ Phản ứng JS của Facebook

Khi chuyển đặc điểm kỹ thuật đến React.createClass, một số phương thức (đáng chú ý là trình xử lý sự kiện) dường như yêu cầu sử dụng React.autoBind để 'ràng buộc gọi lại cho thành phần'. Các phương thức khác (đặc biệt là render()) không có yêu cầu này nhưng vẫn vui vẻ tham khảo 'this.props' hoặc 'this.state' này.

Ngữ cảnh 'này' được sử dụng bởi phương thức render() là gì, nếu nó không phải là thành phần?

Trả lời

3

Đó là vì chúng đã thực hiện autoBind cho các phương thức nội bộ như render. Thực tế, nếu bạn gọi số autoBind và chuyển các phương thức đó, bạn sẽ gặp lỗi.

Đối với phương pháp tùy chỉnh, ban đầu ý tưởng là bạn có thể muốn dính vào bất kỳ ngữ cảnh nào bạn muốn gán, nhưng điều này được thay đổi trong 0.4.x (http://facebook.github.io/react/blog/2013/07/02/react-v0-4-autobind-by-default.html).

Về cơ bản vì ràng buộc this là hầu hết thời gian bạn muốn, từ bây giờ, mọi phương thức trong createClass giờ sẽ là autoBind theo mặc định.

0

Trong bất kỳ khuôn khổ thành phần (không chỉ là phản ứng), xử lý sự kiện cần quản lý thủ công của this tham khảo vì họ đã đăng ký vào DOM như một callback chức năng, không phương pháp. Trong phản ứng 0.3, bạn có thể tự mình liên kết tham chiếu this hoặc bạn có thể sử dụng React.autoBind hiệu quả hơn. Trong React 0.4, tất cả các trình xử lý sự kiện bị ràng buộc bởi khung công tác trên đường vào DOM, vì vậy bạn không phải nghĩ về nó nữa.

do đó tham chiếu this luôn là tham chiếu đến cá thể thành phần phản ứng.

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