2017-05-05 18 views
5

Tôi đã đọc React Docs về phương thức khởi tạo và những gì nó có thể được sử dụng cho đến khi thiết lập trạng thái và chức năng liên kết nhưng thực sự cần thiết trong hầu hết các trường hợp?Phương pháp xây dựng trong React

sự khác biệt giữa làm

export default class MyClass extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
      foo: 'bar', 
     }; 
     this.member = 'member'; 
     this.someFunction = this.anotherFunction(num); 
    } 
    anotherFunction = (num) => num * 2; 
    render() { 
     // render jsx here 
    } 
} 

và chỉ đơn giản là đưa tất cả những gì bên ngoài các nhà xây dựng như

export default class MyClass extends Component { 
    state = { 
     foo: 'bar', 
    }; 
    member = 'member'; 
    someFunction = this.anotherFunction(num); 
    anotherFunction = (num) => num * 2; 
    render() { 
     // render jsx here 
    } 
} 

là một lựa chọn ưa thích hơn người kia và được có bất kỳ vấn đề hiệu suất tôi nên biết về là gì? Điều này đã làm tôi lo lắng một chút và dường như tôi không thể tìm ra câu trả lời cụ thể nào.

+0

Cú pháp 'foo = bar' * bên ngoài * hàm tạo không phải là JavaScript hợp lệ, đây là một tính năng thử nghiệm. –

Trả lời

5

Hai ví dụ của bạn có chức năng giống nhau, nhưng điều quan trọng là chỉ định mọi thứ bên ngoài các phương pháp lớp học, nhưng bên trong cơ thể của một lớp, như bạn có với mọi thứ khác ngoài renderconstructor, không phải là tiêu chuẩn ES6 chỉ hoạt động qua Babel. Cú pháp đó là đề xuất class property syntax.

+0

Phải. Tôi biết Babel đã làm việc ma thuật của nó nhưng không hoàn toàn chắc chắn những gì (nếu có) sự cân bằng. Tôi cũng tìm thấy [bài viết này] (https://medium.com/@joshblack/writing-a-react-component-in-es2015-a0b27e1ed50a) để được giúp đỡ. Cảm ơn. – user3802738

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