Object.fromEntries доступен только на iOS?(реагировать родной - НЕ ВЕБ) - PullRequest
1 голос
/ 30 мая 2019

Название довольно понятно, но все же, рассмотрите этот пример кода:

import * as React from 'react';
import { Text, View, StyleSheet } from 'react-native';
import { Constants } from 'expo';


export default class App extends React.Component {
  render() {
    return ( 
      <Text>
         {Object.fromEntries("test")}
      </Text>
    );
  }
}

Проверьте его на Экспо Закуски

Открыв его на Android устройство, я получаю сообщение об ошибке, что функция fromEntries не существует на Object:

enter image description here

Но на iOS, он существует:

enter image description here

(неверный параметр передан ему, но он, тем не менее, существует)

Так что здесь происходит?Разве движки JS не должны быть идентичны между двумя платформами?Какие еще существуют известные расхождения?

Ответы [ 3 ]

2 голосов
/ 30 мая 2019

Скорее всего, у вас старый или не полностью поддерживаемый движок (проверьте docs ).Вы можете сделать полифилл ES6 следующим образом:

Object.fromEntries = Object.fromEntries || arr => arr.reduce((acc, [k, v]) => (acc[k] = v, acc), {});

Или полифилл ES5 следующим образом:

Object.fromEntries = Object.fromEntries || function(arr) {
    return arr.reduce(function(acc, curr) {
        acc[curr[0]] = curr[1];
        return acc;
    }, {});
};
0 голосов
/ 31 мая 2019

просто добавьте предустановку babel в вашу конфигурацию babel: https://www.npmjs.com/package/babel-plugin-transform-object-from-entries

0 голосов
/ 30 мая 2019

Такие функции, как .flat () , Object.fromEntries и некоторые новые, еще не поддерживаются большинством браузеров и движков Javascript. Это означает, что мы могли бы увидеть, что это будет поддерживаться в следующем обновлении Javascript-движков для Android или iOS. график поддержки

support

...