2016-12-14 24 views
5

Tôi đã xem qua một số phản ứng mã mà định nghĩa một trạng thái thành phần bên trong một lớp học như sau:Khởi tạo phản ứng thành phần nhà nước

// Snippet 1 
class Sample extends React.Component { 
    state = { 
     count: 0 
    } 
} 

Con đường tôi đã học Phản ứng đã tuyên bố nhà nước bên trong constructor của một lớp:

// Snippet 2 
class Sample extends React.Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      count: 0 
     }; 
    } 
} 

Sự khác biệt duy nhất tôi có thể nghĩ là khởi tạo trạng thái trong hàm tạo sẽ đảm bảo trạng thái được khởi tạo đúng trong vòng đời thành phần.

Sự khác biệt giữa hai đoạn mã trên là gì? Trong đoạn 1, có an toàn để giả định rằng trạng thái được đặt đúng khi lớp được khởi tạo không?

Trả lời

3

Điều bạn đang xem là ES7+ Property Initializers. Nó được thực hiện theo cách này bởi vì Facebook biết Javascript sẽ thay đổi trong tương lai. Họ muốn có khả năng đối phó với những thay đổi đó.

Theo facebook ES7 + Initializers tài sản

Chờ, gán cho các thuộc tính có vẻ như một cách rất cấp bách của xác định các lớp học! Tuy nhiên, bạn đã đúng, chúng tôi đã thiết kế nó theo cách này vì nó là thành ngữ. Chúng tôi hoàn toàn mong đợi một cú pháp khai báo nhiều hơn cho khởi sở hữu đến trong phiên bản tương lai của JavaScript ....

Đây là Facebook link Ngoài ra chi tiết here

cũng là một Link to the proposal

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