2017-11-20 21 views
5

tôi muốn rút ngắn một đối tượng chữ trong ES6 như thế này:Cách khắc phục lỗi Eslint "thích phá hoại"?

const loc = this.props.local; 

Lý do là loc.foo(); là dễ dàng hơn nhiều để gõ hơn this.props.local.foo();

Nhưng bây giờ ESLint phàn nàn:

Sử dụng đối tượng destructuring: prefer-destructuring

Tôi đã đọc error description on eslint.org nhưng tôi không hiểu. Họ có một ví dụ trông rất giống với mã của tôi nhưng họ dường như là ok?

var foo = object.bar; 

Làm cách nào để khắc phục lỗi mà không đặt nó bỏ qua trong tệp .eslintrc?

+0

Đó là quy tắc mà người dùng cần * bật * ở địa điểm đầu tiên. Tại sao bạn làm điều đó nếu bạn không thích nó? – Bergi

+1

Điều đó không đúng. Nếu một người mở rộng cấu hình của người khác, thì bạn có thể phải vô hiệu hóa quy tắc này thay thế. – merlinpatt

+1

Xin lỗi, quên đề cập đến tôi đang sử dụng Airbnb styleguide – Timo

Trả lời

10

thay đổi mã của bạn từ:

const local = this.props.local; 

tới:

const { local } = this.props; 

Họ là tương đương và bạn có thể gọi local.foo() trong cùng một cách. ngoại trừ việc sử dụng đối tượng thứ hai destructuring.

+1

Cảm ơn, điều đó đã xảy ra. Tôi tự hỏi tại sao Airbnb styleguide nghĩ điều này là quan trọng. Imho nó làm mọi thứ phức tạp hơn. – Timo

+0

Đây là một tính năng ES6 được sử dụng để giải nén các biến từ mảng hoặc đối tượng. cú pháp này tạo một mảng từ các biến: 'var x = [y, z]'. phép gán destructuring sử dụng cú pháp tương tự, nhưng ở phía bên tay trái của phép gán để xác định những giá trị nào cần giải nén từ biến có nguồn gốc. var [y, z] = x. điều tương tự cũng đúng đối với các đối tượng. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment. Đó là nó! –

+1

Vâng, điều này có ý nghĩa cho việc trích xuất nhiều giá trị nhưng không phải cho một giá trị duy nhất. Airbnb styleguide là một chút để nghiêm ngặt tại thời điểm này imho. – Timo

1

Đây là cấu trúc mới trong ES 6 cho phép bạn khớp thuộc tính của một đối tượng được chỉ định. Cú pháp bạn cần là: const { local: loc } = this.props

có nghĩa là: "khai báo một hằng số và gán giá trị của thuộc tính cục bộ từ this.props".

0

Nó nói cho bạn để sử dụng

const {props: {local: loc}} = this; 
+1

Điều này thật xấu xí và khó hiểu hơn là chỉ truy cập vào một thuộc tính thông thường. –

+0

@MartinDawson Tôi đồng ý, nhưng bạn cần phải nói rằng người đã kích hoạt quy tắc 'thích-destructuring' của linter của họ :-) – Bergi

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