2016-08-16 13 views
16

tôi đã có một số mã JSX trong một ứng dụng phản ứng như thế này:Những gì hiện :: (dấu hai chấm) có nghĩa là trong JavaScript?

... 
_renderSignOutLink() { 
    if (!this.props.currentUser) { 
     return false; 
    } 

    return (
     <a href="#" onClick={::this._handleSignOutClick}><i className="fa fa-sign-out"/> Sign out</a> 
    ); 
... 

không ruột kết đôi, ::, có ý nghĩa gì trước khi gọi hàm?

+2

http://stackoverflow.com/questions/31220078/javascript-double-colon-es7-proposal – dmoo

+3

Không phải là một phần của JSX, chứ không phải là một phần của JS thích hợp –

+2

Điều này sẽ không tạo ra một thể hiện hàm mới mỗi lần render được gọi (mà có thể là rất nhiều lần tùy thuộc vào thay đổi trạng thái của bạn?) –

Trả lời

21

Các ::a proposed binding operator rằng desugars vào một hàm ràng buộc:

::foo.bar 
// becomes 
foo.bar.bind(foo) 

này rất hữu ích trong Phản ứng (và bất cứ xử lý sự kiện khác) vì nó có nghĩa this sẽ có giá trị dự kiến ​​(thể hiện của các lớp) khi xử lý sự kiện sau đó được gọi.

+5

Chỉ cần một số thực phẩm cho tư tưởng. Nó không được coi là thực hành tốt để sử dụng ràng buộc cho các cuộc gọi hàm trên các thành phần trong phương thức render của chúng ta, vì nó có thể đạt hiệu năng. Dưới đây là một số giải pháp thay thế https://daveceddia.com/avoid-bind-when-passing-props/ – Justin

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