Объект экспорта ReactJS / TypeScript из Ajax

Итак, у меня есть несколько вызовов ajax (jQuery), которые возвращают, конечно, список элементов (объект для каждой функции).

Я хочу, чтобы компонент вызывал все, что получает ajax, бросал мне элементы, а затем я собираюсь построить еще один объект со всеми этими результатами (4 результата будут объединены в один объект с разными реквизитами).

Моя проблема здесь ... как я могу вызвать и экспортировать эти объекты? Я попытался создать большую функцию и экспортировать ее из TSX. Все работает, с небольшой ошибкой ... После прохождения этих 4 вызовов ajax он продолжает повторяться, как будто сам компонент продолжает обновляться, и это меня буквально ни к чему не приводит.

Любая идея, как я могу экспортировать результаты вызова ajax, не видя его LOOP, как 100 раз?

Это то, что я пробовал до сих пор ->

let CalendarItems = createCalendarItems();
export {CalendarItems};

P.S: Я новичок в React и погружаюсь в довольно сложные проекты, так что терпите меня. Заранее спасибо.

function getItems() {


  var today = new Date();
  return $.ajax({
    url: "SOMEURL"

    type: "GET",
    headers: {
      "ACCEPT": "application/json;odata=verbose"
    },
    async: false,
    success: function (data) {
      var myitems = data.d.results;
      console.info("success  ");
    },
    error: function () {
      console.info("Failed to get details ");
    }
  });
}

Цель этого (возможно, помогает): ->

Я делаю AJAX-вызовы Sharepoint для извлечения элементов (были там, сделали это, вызовы работают). Эти вызовы извлекают список элементов (4 списка), к которым я присоединяюсь в новом объекте.

Этот новый объект БУДЕТ использоваться как список для response-bootstrap-table, как в -> Я буду использовать этот объект для создания своей таблицы.

Итак, я в конечном итоге передам созданный объект этому ->

  <BootstrapTable data = { calendarObjectAllItems} version='4'>

вы сказали, что выполняете вызовы ajax, поэтому createCalendarItems возвращает обещание?

Nicholas Tower 10.09.2018 18:39

вероятно, потребуется увидеть более двух строк кода, чтобы понять, что происходит ...

Steve Archer 10.09.2018 18:40

Если бы английский (или другие естественные языки) были однозначными, мы бы писали код напрямую на них. Поскольку это не так, мы разработали языки программирования для однозначного взаимодействия друг с другом. Поэтому вместо описания вашей проблемы на английском языке опубликуйте ее в виде кода.

Jared Smith 10.09.2018 18:52

Я написал буквально не так много кода, я все еще пытаюсь выяснить, как я могу экспортировать свой объект из одного файла в другой (так сказать) lol. Я обновил свой вопрос, возможно, это поможет.

Dante R. 10.09.2018 18:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
382
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Трудно дать конкретику, поскольку вы не предоставили много кода. Но, вообще говоря, если вам нужно загрузить асинхронный материал в компонент, вы начнете это с помощью ловушки жизненного цикла componentDidMount. Итак, ваш компонент может выглядеть примерно так:

import { fetchCalendarItems } from 'somewhere';

class MyComponent extends Component {
  constructor(props) {
    super(props);
    this.state = {
      items: [],
    }
  }

  componentDidMount() {
    fetchCalendarItems()
      .then(items => this.setState({ items }))
  }

  render() {
    const { items } = this.props;
    // If necessary, you can render some placeholder until the data is loaded
    //if (items.length === 0) {
    //  return <div>Loading...</div>
    //}

    return (
      <div>
        {items.map(item => <div>{item.title}</div>)}
      </div>
    )
  }
}

Таким образом, компонент будет монтироваться и отображаться пустым (или при необходимости отображать экран загрузки). Затем выполняется http-запрос, и когда запрос завершается, он вызывает setState. Это заставит его снова отобразить, теперь уже с данными.

Я думаю, что переступил границы, пытаясь начать с чего-то настолько сложного, любая идея, почему "const {items}" отображается как -> Type 'Readonly <{children ?: ReactNode; }> & Readonly <{}> 'не имеет свойства' items 'и сигнатуры индекса строки. Я не хочу, чтобы компонент вызывался с этими элементами (например, добавлял их в react.component <>). Если я все еще вас недостаточно раздражал, пожалуйста, взгляните на мой первоначальный вопрос, я немного обновил его, возможно, вы сможете сузить его.

Dante R. 10.09.2018 19:29

Эти ошибки происходят из машинописного текста. Похоже, вы не определили тип состояния и / или свойств компонента. Обычно вы делаете это, говоря class MyComponent extends Component<Props, State>, где Props - это определение типа для ваших свойств, а State - это определение типа для вашего состояния. См. Раздел «как создать компонент реакции с машинописным текстом» на этой странице: gist.github.com/juhaelee/b80ab497f74e7393b15439c17421d299

Nicholas Tower 10.09.2018 19:43

Хм, я помню, как создавал некоторые компоненты без использования всех свойств и состояния (поскольку я их не использовал), возможно, я был неправ. Снова в школу для меня, спасибо!

Dante R. 10.09.2018 19:54

Другие вопросы по теме