2016-03-31 34 views
6

Tôi đang cố gắng tìm ra những phần nào của ES6 được hỗ trợ trên React Native. Tôi biết về các biến đổi Babel được liệt kê here, nhưng tôi đang gặp khó khăn trong việc tìm hiểu JavaScriptCore hỗ trợ gì trên riêng của mình mà không cần bất kỳ transpiling nào. Giống như JavaScriptCore sẽ hỗ trợ những thứ khác nhau trên các nền tảng và thiết bị khác nhau? Nó có khác biệt trên iOS 8 so với iOS9 không? Ví dụ, tôi đã viết một số mã sử dụng các chức năng máy phát và các loại bộ sưu tập ES6, và đó không phải là một phần của những gì được liệt kê trong các biến đổi Babel, và nó hoạt động tốt trong React Native trên các thiết bị mà tôi đã thử nghiệm. Nhưng làm cách nào để biết liệu nó có hiệu quả với tất cả các thiết bị mà tôi đang nhắm mục tiêu không?ES6 trên JavaScriptCore và React Native

Trả lời

4

Như bạn đã đề cập React Native đang sử dụng JavaScriptCore làm công cụ Javascript. JavaScriptCore cũng là công cụ được sử dụng bởi Safari của iOS. Đối với Andriod nói chung V8 được sử dụng. Vì vậy, bạn sẽ chỉ phải xem xét tính năng hỗ trợ hiện tại tại a compatability table like this one.

1

Phiên bản JavaScriptCore phụ thuộc vào phiên bản iOS của bạn, ví dụ: trên iOS 8 bạn không có quyền truy cập vào một số phương pháp ES6. https://mcculloughwebservices.com/2016/11/29/adding-support-es2015-number-methods/

họ thậm chí làm a polyfill sau bài viết của họ, vì vậy chỉ cần cài đặt nó:

npm install --save react-native-polyfill 

Và tải nó ở phần đầu của ứng dụng của bạn:

import 'react-native-polyfill' 

tôi đã kết thúc ở đây vì Number.isInteger vừa đưa ra một lỗi trên thiết bị của người sử dụng tôi Phản ứng ứng dụng Native:

TypeError: undefined is not a function (evaluating 'Number.isInteger(u)')

Họ có iOS 8 .1.2. UserAgent của họ là Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 như Mac OS X) AppleWebKit/600.1.4 (KHTML, như Gecko) Điện thoại di động/12B440

Tuy nhiên trên iOS 10.3.1 (sử dụng tôi iPhone hoặc trình mô phỏng), phương pháp này tồn tại và hoạt động tốt. UserAgent của tôi là Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 như Mac OS X) AppleWebKit/603.1.30 (KHTML, như Gecko) Điện thoại di động/14E8301

Bên cạnh đó, theo Caniuse, tính năng này xuất hiện trong Safari Mobile 9.

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