Написание пользовательского компонента по модели CheckboxGroupInput
Я хотел бы написать собственный компонент для react-admin
, Его поведение будет таким же, как CheckboxGroupInput
; единственное отличие состоит в том, что я хотел бы организовать флажки в соответствии с определенным образом в таблице.
В настоящее время я использую CheckboxGroupInput
сюда:
<CheckboxGroupInput
source="data"
choices={[
{ id: 'id1', name: 'id1' },
{ id: 'id2', name: 'id2' },
{ id: 'id3', name: 'id3' },
]}
/>
Флажки отображаются в одной строке, я не контролирую это.
Я хотел бы иметь следующее:
<PromotionPicker
source="data"
/>
Различные варианты будут скрыты в CustomInput
(поскольку они не изменяются) и отображаются определенным образом в таблице.
Проблема в том, что я не знаю, как этого добиться.
- Должен ли я создать компонент и использовать композицию с существующим
CheckboxGroupInput
как поведение такое же? Найдите способ переписатьrender()
только метод? - Должен ли я написать совершенно новый компонент? Если да, есть ли у вас какие-либо ресурсы или идеи? Я прочитал документ о пользовательских вводах. Это применимо в этом случае? Кажется, о
<Field>
составная часть.
Вот что я попробовал:
const renderPromotionPicker = ({ input, meta: { touched, error } }) => (
<Table>
<TableHead>
<TableRow>
<TableCell>Col 1</TableCell>
<TableCell>Col 2</TableCell>
<TableCell>Col 3</TableCell>
</TableRow>
</TableHead>
<TableBody>
<TableRow>
<TableCell>
<Checkbox id={'id1'} value={'val1'} />
</TableCell>
<TableCell>
<Checkbox id={'id2'} value={'val2'} />
</TableCell>
<TableCell>
<Checkbox id={'id3'} value={'val3'} />
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<Checkbox id={'id4'} value={'val4'} />
</TableCell>
<TableCell>
<Checkbox id={'id5'} value={'val5'} />
</TableCell>
<TableCell>
<Checkbox id={'id6'} value={'val6'} />
</TableCell>
</TableRow>
</TableBody>
</Table>
);
const PromotionPicker = ({ source }) => <Field name={source} component={renderPromotionPicker} />
export default PromotionPicker;
Проблема с этим кодом заключается в том, что я не получаю данные, предоставленные source={data}
тем самым флажки не отражают ожидаемые данные.
Спасибо за ваши предложения!