Доступ к модели из компонента «Редактировать»

У меня есть следующий компонент редактирования

const UserEdit = (props) => (
  <Edit {...props}>
    <TabbedForm >
      <FormTab label="User Account">
        <DisabledInput source="id" />
        <TextInput source="email" />
        <TextInput source="password" type="password"/>
        <TextInput source="name" />
        <TextInput source="phone" />
        <SelectInput source="role" optionValue="id" choices={choices} />
      </FormTab>
      <FormTab label="Customer Information">
        <BooleanInput label="New user" source="Customer.is_new" />
        <BooleanInput label="Grandfathered user" source="Customer.grandfathered" />
      </FormTab>
    </TabbedForm >
  </Edit>
);

Вторая вкладка FormTab (информация о клиенте) мне нужна только в том случае, если с моделью пользователя связана какая-то информация (JSON выглядит примерно так):

{
   id: <int>,
   name: <string>,
   ....
   Customer: {
       is_new: true,
       grandfathered: true,
   }
}

Я хотел бы знать, могу ли я как-то получить доступ к информации о модели (в данном случае, если ключ клиента существует и имеет информацию), чтобы иметь возможность отображать или нет <FormTab label="Customer Information">

Я немного запутался в глобальном состоянии редукции. Я знаю, что данные находятся в состоянии, потому что я отлаживал их с помощью инструментов Redux. (Я попытался посмотреть в this.props, но не смог найти ничего для доступа к глобальному состоянию)

Спасибо.


person Raul Marrero Rodríguez    schedule 20.03.2017    source источник


Ответы (1)


Если вам нужен объект при создании формы, вы можете connect отправить его в хранилище избыточности.

import { connect } from 'react-redux';

// this is just a form, note this is not being exported
const UserEditForm = (props) => {
    console.log(props.data); // your object will be in props.data.<id>
    let customFormTab;
    const id = props.params.id;

    if (typeof props.data === 'object' && && props.data.hasOwnProperty(id)) {
        if (props.data[id].something) {
            customFormTab = <FormTab>...;
        }
    }

    return <Edit {...props}>
          <Formtab...
          {customFormTab}
    </Edit>;
}

// this is your exported component
export const UserEdit = connect((state) => ({
    data: state.admin.User.data
}))(UserEditForm);

PS: я не уверен, является ли это хорошим или желаемым решением (надеюсь, кто-нибудь поправит меня, если я делаю что-то не в соответствии с тем, как были разработаны redux или admin-on-rest).

person jkrnak    schedule 20.03.2017
comment
Я думаю, что это сработает, поскольку я могу получить доступ к состоянию Redux, где я могу видеть форму redux и т. Д. Спасибо! - person Raul Marrero Rodríguez; 21.03.2017