Просто - реагируй и OData

Я совершенно новичок в React и с трудом понимаю это.

Мне было поручено создать действительно простую выборку API для конечной точки OData.

Теперь я наткнулся на эту библиотеку https://www.npmjs.com/package/react-odata

Который выглядит фантастически! Однако я просто не понимаю, как заставить что-то подобное работать.

Я понимаю самые основные принципы того, как реагирует, и прошел много основных уроков. Но по какой-то причине я не могу разобраться с этим.

Так как же использовать эту библиотеку для простого запроса конечной точки OData и отображения необработанных данных?

2 ответа

Так что проблема в том, что я не понял, что мне все еще нужно явно сделать вызов и вернуть данные из этого.

import React, { Component } from 'react';
import Fetch from 'react-fetch-component';
import OData from 'react-odata';

const baseUrl = 'http://services.odata.org/V4/TripPinService/People';
const query = { filter: { FirstName: 'Russell' } };

export default class App extends Component {
  render() {
    return (
      <div>
        <h1>Basic</h1>
        <OData baseUrl={baseUrl} query={query}>
          {({ loading, data, error }) => (
            <div>
              {loading &&  <span>Loading... (()=>{console.log(loading)}) </span>}
              {data && data.value.map((d, i) => <div key={i} id={i}>{d.FirstName}</div>)}
            </div>
          )}
        </OData>        
      </div>
    );
  }

  /* Setup consistent fetch responses */
  componentWillMount() {
    fetch('http://services.odata.org/V4/TripPinService/People')
      .then((response) => response.json())
      .then((responseJson) => {
          return responseJson.value[0].FirstName
      })
      .catch((error) => {console.error(error)});

  }
}

Исходя из указанной ссылки в вопросе, я обнаружил, что этот компонент использовал компонент Reaction-fetch в качестве базы для выполнения вызова.

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

Я предполагаю, что это будет что-то вроде этого:

<OData baseUrl={baseUrl} query={query}>
  { ({ loading, error, data }) => (
    <div>
      <YourComponent data={data} />
    </div>
  )}
</OData>

Это будет использовать response-odata, но вам не нужен этот пакет, чтобы делать то, что вы хотите. Вы можете просто сделать обычный AJAX-вызов по URL и передать свои компоненты возвращенным данным.

Этот пост может помочь: http://andrewhfarmer.com/react-ajax-best-practices/

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