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
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.
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.
- 1. EventEmitter và Subscriber ES6 Cú pháp với React Native
- 2. Thừa kế React và ES6
- 3. React + React Native starter kit
- 4. React-Native + crypto: Cách tạo HMAC trong React-Native?
- 5. es6 modules native support
- 6. Gỡ lỗi React Native trên adb tcpip
- 7. Lỗi React Native SocketProtocol và TimeoutError
- 8. Tuyệt đối và Flexbox trong React Native
- 9. React-Native: LayoutAnimation
- 10. React Native Android & Genymotion
- 11. React Native Navigator
- 12. React Native for Mac
- 13. React Native Infinite Scroll
- 14. Xem PDF trong React Native
- 15. React Native: Không thể đọc thuộc tính 'push' của undefined - Có NavigatorIOS và ES6 ràng buộc (điều này)
- 16. React Native sử dụng Cocoapods
- 17. Socket.io không hoạt động với React Native trên Android
- 18. React Native alignSelf center và kéo dài tới maxWidth?
- 19. Phiên bản nào hỗ trợ React Native (iOS và Android)?
- 20. Relay vs Redux vs Apollo với GraphQL và React-Native
- 21. Kết hợp Xamarin và React Native trong một ứng dụng
- 22. Tại sao React Native Drawer không được kích hoạt bằng React Native Router Flux + Redux?
- 23. React-native bị kẹt tại Dependency Graph
- 24. Chiều rộng màn hình trong React Native
- 25. Vẽ quy tắc ngang trong React Native
- 26. React Native, vòng đời Android và điều hướng
- 27. TransformError với babel-preset-react-native/index.js
- 28. React Native: require() với Chuỗi động?
- 29. Định dạng chuỗi ngày trong React Native
- 30. React-Native: đo Chế độ xem