2015-03-19 15 views
5

Tôi có một thành phần với một số hàm tĩnh được xác định cho nó (thông qua thuộc tính statics trong định nghĩa thành phần). Tôi cần truy cập một trong các chức năng tĩnh này trong phương pháp vòng đời componentDidMount. Tôi đã thử các sau đây đối tượngLàm thế nào để truy cập một hàm tĩnh từ một cá thể thành phần trong phản ứng?

  • this có một tài sản statics, nhưng điều đó có vẻ là null luôn
  • this đối tượng cũng có một _owner, do đó có một tài sản statics. Một lần nữa, đó là luôn luôn null

Sau đó, tôi đã cố gắng this.constructor.<static_function>. Điều này làm việc cho tôi. Tôi chỉ muốn biết liệu đây có phải là cách đúng để truy cập các hàm tĩnh được định nghĩa cho một thành phần hay không có cái gì khác mà tôi không biết.

Trả lời

7

Truy cập các phương pháp và thuộc tính tĩnh của bạn qua this.constructor là tốt. Bạn cũng có thể truy cập chúng qua ComponentClass.<static>.

+0

Ý của bạn là gì * thông qua 'this.constructor' *. Làm như thế nào? – Green

+0

@Green ví dụ: Bạn có thể sử dụng 'this.constructor.myStaticFunction()' để truy cập một hàm được khai báo trong thành phần của bạn với 'static myStaticFunction() {}'. –

5

Tại sao không xác định các hàm trong phạm vi bên ngoài và chỉ xuất chúng trong thuộc tính statics. Một cái gì đó như thế này:

var foo = function() { ... } 
var bar = function() { ... } 

var MyComponent = React.createClass({ 
    statics: { 
    foo: foo, 
    bar: bar 
    } 
}); 

Bây giờ, các chức năng tĩnh có thể truy cập ở mọi nơi trong phạm vi mã thành phần.

+1

Tôi thường sử dụng phương pháp này, có lẽ có tốt hơn? Tôi không biết - nhưng điều này hoạt động tốt. Đương nhiên, bạn muốn đảm bảo rằng thành phần của bạn được sắp xếp chính xác để bạn không bị rò rỉ, nhưng điều đó sẽ xảy ra dù sao đi nữa! –

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