static
không phải là một phần của thế hệ Javascript cuối cùng ("ES5"), đó là lý do tại sao bạn sẽ không tìm thấy nó trong tài liệu cũ hơn. Tuy nhiên, phần còn lại của cú pháp lớp "ES6" hiện được hỗ trợ trong tất cả các trình duyệt chính ngoại trừ Internet Explorer (http://caniuse.com/#search=es6), và nếu bạn sử dụng trình chuyển đổi như Babel, bạn có thể sử dụng nó trong bất kỳ trình duyệt nào. Hầu hết người dùng React đã sử dụng Babel để transpile JSX của họ, vì vậy các trang React (như Redux TodoMVC) mang nó cho các cấp. Bạn có thể đọc thêm về static
tại đây https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static.
Trong trường hợp static propTypes
, propTypes cần được khai báo trên chính lớp đó, không phải trên cá thể của lớp học. Nói cách khác, nếu bạn sử dụng các thành phần không quốc tịch:
function Foo() {
this.PropTypes = somePropTypes; // bad
return <div></div>;
}
Foo.PropTypes = somePropTypes; // good
Khi sử dụng lớp ES6, tương đương với Foo.PropTypes = somePropTypes
là:
class Foo extends React.Component {
static PropTypes = somePropTypes;
}
Là một lưu ý phụ, khả năng xác định các thuộc tính trong một lớp học như thế không tồn tại trong bất kỳ trình duyệt nào (chưa): bạn cần trình chuyển đổi như Babel với plugin transform-class-properties
.
"Tôi hy vọng tôi có thể xóa bài đăng này". Bạn không cần. Việc đạt được điểm số của bạn từ ba phiếu bầu tiêu cực là không đáng kể và chỉ vì ba người không thích câu hỏi của bạn, điều đó không có nghĩa là những người khác sẽ không tìm thấy câu hỏi này hữu ích. Bất cứ ai đã sử dụng SO trong một thời gian có ít nhất một câu hỏi rằng họ hơi xấu hổ khi hỏi (bản thân tôi có), nhưng toàn bộ vấn đề này là giúp mọi người học hỏi, và thậm chí cả những câu hỏi "xấu" có thể làm được điều đó. – machineghost
@machineghost Cảm ơn. Trong thực tế, tôi đọc một số tài liệu javascript. Tôi không tìm thấy thuộc tính 'static'. Có lẽ tôi không đọc kỹ tài liệu. tất nhiên, 'tĩnh' rất thường xuyên trong các ngôn ngữ khác. – BAE