2016-03-03 20 views
13

Tôi đang làm việc trên dự án React Native và tôi đang sử dụng các lớp ES6 cho các thành phần React.React.js - sử dụng bộ khởi tạo thuộc tính cho tất cả các phương thức thành phần

Vì các thành phần phản ứng được xác định qua lớp ES6 không có tự động, nhóm React recommends kết hợp bộ khởi tạo thuộc tính ES7 với các hàm mũi tên để tạo hiệu ứng tương tự.

Để phù hợp và tránh nhầm lẫn với điều này ràng buộc, tôi đang sử dụng tài sản initializers ES7 cho tất cả các phương pháp thành phần:

class Foo extends React.Component { 
    constructor(props) { 
    super(props); 
    ... 
    } 

    componentDidMount =() => { 
     ... 
    }; 

    bar =() => { 
    ... 
    }; 

    render =() => { 
    ... 
    }; 
} 

tôi đã tự hỏi - được có bất kỳ hãy cẩn thận thực hiện nghiêm túc nhận thức được ? Đặc biệt, tôi tự hỏi về phương thức render().

Nhìn chung, điều này có vẻ như là một cách tiếp cận tốt không?

Trả lời

10

Thông báo trước lớn nhất là tính năng cụ thể này không phải là tiêu chuẩn và chưa được thỏa thuận. (Nó sẽ không phải là ES7 vì không có ES7. Có thể ES2017 nhưng vẫn chưa rõ ràng.)

Ngoài ra còn có một chi phí để phân bổ một số đối tượng sống lâu mới và lưu trữ chúng trên lớp.

Tôi sẽ không đề xuất điều này. Chỉ để gọi lại.

+0

Cảm ơn phản hồi! – ender672

+1

Theo dõi nhanh - nhóm của tôi đã quyết định sử dụng phương thức bind() cho các cuộc gọi lại và chúng tôi đang tạm dừng các trình khởi tạo thuộc tính với các chức năng mũi tên ngay bây giờ. Câu trả lời của bạn đã giúp chúng tôi đưa ra quyết định này. – ender672

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