Как заполнить <SelectInput>варианты с уже извлеченными данными - PullRequest
0 голосов
/ 28 июня 2018

В моем компоненте приложения у меня есть ресурс подписок с компонентом редактирования:

<Resource name="subscriptions" list={SubscriptionList} edit={SubscriptionEdit} />

SubscriptionEdit выглядит примерно так:

 export const SubscriptionEdit = props => (
  <Edit title={<SubscriptionTitle />} {...props}>
    <TabbedForm >
      <FormTab label="Info">
        ...

        <SelectInput
          source="typeSubscription"
          choices={[
            { id: 'monthly', name: 'Monthly' },
            { id: 'anual', name: 'Anual' },
          ]}
          label="Subscription plan"
        />
      </FormTab>
    </TabbedForm>
  </Edit>
);

А данные, извлекаемые из конечной точки при входе в это представление, представляют собой JSON, подобный этому:

{
  id: 1,
  typeSubscription: null,
  selectedDay: null,
  daysAvailable: [
      { id: '07-01-2018', name: 'First day` },
      { id: '07-03-2018', name: 'Second day` },
      { id: '07-07-2018', name: 'Third day` },
      { id: '07-08-2018', name: 'Fourth day` },
  ],
}

Что мне нужно сделать, это добавить еще один SelectInput с использованием массива daysAvailable для выбора, чтобы выбрать день для selectedDay.

<SelectInput
      source="selectedDay"
      choices={NEED TO ADD daysAvailable HERE!}
      label="Select an available day"
 />

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

Я попытался использовать ReferenceInput и оставить выбор для SelectInput пустым, как предлагалось в документации, но, поскольку этот список дней изменяется в зависимости от идентификатора пользователя, я не смог найти способ добавить этот параметр в новый ресурс.

Я использую admin-on-rest, но планирую в ближайшем будущем перейти на response-admin, если это уместно.

Тем не менее, любая помощь будет оценена.

Ура!

1 Ответ

0 голосов
/ 27 сентября 2018

Для этого ReferenceInput . Вы можете указать название ресурса, например:

import { ReferenceInput, SelectInput } from 'react-admin'

<ReferenceInput label="Post" source="post_id" reference="posts">
    <SelectInput optionText="title" />
</ReferenceInput>
...