2015-02-25 22 views
15

Tôi đã lớp phụ tùng sau:Sử dụng React.js tĩnh bên trong phương thức lớp

var Widget = React.createClass({ 
    statics: {title: "a title"}, 
    ... 
}); 

Có một cách để truy cập tiêu đề tĩnh bên trong phương pháp class'es (sử dụng this)? Ví dụ:

render: function() { 
    return <div>{this.title}</div>; 
} 
+0

bạn không thể truy cập vào tĩnh học trong lớp. Bạn chỉ có thể làm Widget.title – Dhiraj

Trả lời

18

Bạn có thể truy cập vào một tĩnh từ bên trong các thành phần từ this.constructor:

như vậy trong trường hợp này nó sẽ là:

this.constructor.title 
+2

Tài liệu này có được không? Nếu vậy chúng ta có thể nhận được liên kết? – phpslightly

5

Đối tượng statics của một Phản ứng Class là một cách để xác định phương pháp tĩnh (ví dụ, phương pháp mà không cần bất kỳ bối cảnh để chạy). Điều đó đang được nói, nó không có ý nghĩa để gọi một phương pháp tĩnh từ this.

Có vẻ như bạn đang tìm kiếm thuộc tính "tĩnh" (tức là không thể thay đổi). Vì vậy, bạn nên sử dụng nó như this.props.title trên render(). Để đặt giá trị của tiêu đề, bạn nên làm <Widget title='a title'/>. Điều đáng nói đến là bạn có thể đặt các thuộc tính mặc định, bằng cách xác định phương thức getDefaultProps.

Tìm hiểu thêm về statics và khoảng props trên tài liệu của React.

8

Câu trả lời trực tiếp:

React.createClass({ 
    title: 'a title', 
    render: function() { 
     return <div>{this.title}</div>; 
    } 
}); 

Hoặc:

React.createClass({ 
    componentWillMount: function(){ 
     this.title = 'a title'; 
    }, 
    render: function() { 
     return <div>{this.title}</div>; 
    } 
}); 

Nhưng thực sự ... tại sao không chỉ cần sử dụng một biến?

var TITLE = 'a title'; 

React.createClass({ 
    render: function() { 
     return <div>{TITLE}</div>; 
    } 
}); 
+2

Được cảnh báo, ví dụ # 3 'TITLE' sẽ là tĩnh và được chia sẻ trong mọi trường hợp của lớp. –

+0

Vâng, tôi tin rằng đó là ý định ở đây vì các số liệu thống kê đã đề cập đến OP. – FakeRainBrigand

+0

Tệ của tôi, tôi đã đọc sai câu hỏi. Phong cách ưa thích của tôi là ví dụ của bạn # 3 bởi một shot dài. –

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