выборка данных реагирует на родную - PullRequest
0 голосов
/ 24 апреля 2020

извиняюсь, если это было задано, я совершенно новый в реагировать родной ...

У меня есть простое приложение, которое отображает некоторые категории и данные в одном файле js в объекте с массивами:

export default tabs = {
    categories: [
        { id: 'sample', title: 'sample' },
        { id: 'sample2', title: 'sample2' },
    ],
    deals: [
        { id: 'sample', title: 'sample' },
        { id: 'sample2', title: 'sample2' },
    ],
};

Я хотел использовать один и тот же файл только для подключения к API и получения данных.

Я пробовал много вещей, например:

import React from 'react';
const APIcategories = '......';
export default {
    componentDidMount() {
        console.log('inside... ');
        fetch(APIcategories)
            .then((res) => res.json())
            .then((json) => this.setState({ data: json }));
    },
};

просто ничего не попало в журнал ... много других методов ничего не пробовал ..

у кого-нибудь было что-нибудь подобное

Оцените заранее!

Пока мне удалось без ошибок:

import React, { Component } from 'react';

const APIcategories = 'https://.......';

class SomeClass extends Component {
    constructor(props) {
        super(props);
        this.state = {
            data: [],
            error: null,
        };
        this.arrayholder = [];
    }
    componentDidMount() {
        this.someGetRequest();
    }
    someGetRequest = () => {
        console.log('inside------');
        fetch(APIcategories)
            .then((res) => res.json())
            .then((json) =>
                this.setState({ data: res.results, error: res.error || null })
            );

        this.arrayholder = res.results;
        console.log(arrayholder);
    };
}
console.log('File opened---------');
export default SomeClass;

1 Ответ

0 голосов
/ 24 апреля 2020

Создайте класс и затем фактически используйте его со своими методами.

class SomeClass extends Component {
  constructor(props) {
    super(props);

    this.state = {
      loading: false,
      data: [],
      error: null,
    };

    this.arrayholder = [];
  }

  componentDidMount() {
    this.someGetRequest();
  }

  someGetRequest = () => {
    const url = `https:...`;
    this.setState({ loading: true });

    fetch(url)
      .then(res => res.json())
      .then(res => {
        this.setState({
          data: res.results,
          error: res.error || null,
          loading: false,
        });
        this.arrayholder = res.results;
        console.log(res.results)
      })
      .catch(error => {
        this.setState({ error, loading: false });

      });
  };

 export default SomeClass;

Этот код уже был протестирован с expo-cli 3.18.4

...