Реагировать на родной андроид undefined это не функция, работающая в IOS - PullRequest
0 голосов
/ 02 декабря 2018

Работает в IOS и работает в Android, когда работает отладчик, но не работает через симулятор Android.Я получаю это сообщение через react-native log-android, и в основном у меня просто ничего не возвращается на экран:

12-02 10:39:58.511 22502 24204 W ReactNativeJS: TypeError: undefined is not a function (near '...}).flat()

Изображение Android

Изображение IOS

Вот функция выборки, которую я использую:

import axios from 'axios';

export const getData = async url => {
  try {
    const response = await axios.get(url);
    const data = response.data;
    return data;
  } catch (error) {
    console.log(error);
  }
};

export default getData;

Внутри моего componentDidMount, где я вызываю конечную точку с помощью функции GetData выше:

componentDidMount() {
    const teamsAPI = 'https://statsapi.web.nhl.com/api/v1/teams';

    getData(teamsAPI).then(teams => {
      const teamData = teams.teams
        .map(({ id, name }) => ({
          teamId: id,
          teamName: name
        }))
        .flat()

      this.setState({
        teams: teamData
      });
    });
  }

С тех пор все было перенесено в REDUX, но сегодня я оглянулся на одну из своих веток с более простым кодом, который был рассмотрен выше, и у меня была проблема с этим кодом.К сожалению, до сих пор не осознал всех различий с компиляцией кода.Понимают, что проблема, вероятно, из-за 2-х компиляторов, но они не имеют ни малейшего представления о том, как решить проблему / почему в одном, а в другом будет ошибка типа.

Это работает с отладчиком, я думаю, из-за чегобыло упомянуто здесь:

React Native, отличающийся в симуляторе / на устройстве / с или без отладки Chrome

Edit: хотел бы упомянуть, что я уже сделал сброс кешаи удалил папку сборки и перестроил

1 Ответ

0 голосов
/ 03 декабря 2018

Я опробовал ваш код, и отказ от обещаний происходит для меня как в Android, так и в iOS.Это происходит из-за удаления .flat(), которое останавливает возникновение отклонения обещания.

При просмотре данных, которые вы там отображаете, нет необходимости выравнивать данные, когда они возвращаются.как массив объектов без других массивов внутри него.

Может ли удаление .flat() быть возможным решением для вас?

Вы можете увидеть здесь для получения дополнительной информации о .flat() и о том, как это все еще экспериментально array.prototype.flat не определен в nodejs

Я также хотел бы рассмотреть возвращение чего-тоиз вашей getData функции, когда она делает ошибку или, возможно, использует обещание таким образом, чтобы вы могли обработать ошибку.

...