Как получить индекс SimpleFormIterator - PullRequest
0 голосов
/ 08 июня 2018

Я хочу получить доступ к индексу simpleFormIterator.Как я могу это сделать?У меня есть код что-то подобное, я пытаюсь получить к нему доступ в компоненте SelectInput

<ArrayInput source='services'>
    <SimpleFormIterator>
        <TextInput source='id' label="Service Name" validate={this.RequiredAndRegex} />
        <FormDataConsumer>
            {({ formData, ...rest }) => 
                <ArrayInput source='parametervalues'>
                    <SimpleFormIterator>
                        <TextInput source='id' label="Parameter Values" validate={this.RequiredAndRegex} />
                        <SelectInput label="Paramater Type"
                            source="id"
                            choices={this.getParameters(formData.services[index].servicetype)}
                            optionText={optionRenderer}
                            optionValue="id" />
                    </SimpleFormIterator>
                </ArrayInput>
            }
        </FormDataConsumer>
    </SimpleFormIterator>
</ArrayInput>

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

SimpleFormIterator фактически передает индекс в строке 137. (https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/form/SimpleFormIterator.js).
Однако вы не сможете получить к нему доступ без дочернего элемента, как вы пытаетесь в своем примере.

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

Обычно я пишу полную пользовательскую форму, используя redux-form и material-ui, а затем отправляю значения вDataProvider.

0 голосов
/ 08 июня 2018

Это невозможно с SimpleFormIterator.Вам придется написать свой собственный.Я предлагаю использовать его в качестве базы (https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/form/SimpleFormIterator.js) и передавать индекс при клонировании ввода в L114

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...