温馨提示:本文翻译自stackoverflow.com,查看原文请点击:reactjs - How to use react-admin's ChipField if there is no field/column name?
material-ui reactjs react-admin react-final-form

reactjs - 如果没有字段/列名,如何使用react-admin的ChipField?

发布于 2020-03-28 23:41:54

我有一个CheckboxGroupInput像这样领域:

   <CheckboxGroupInput source="fruits" choices={[
        { 'name': 'apples' },
        { 'name': 'pears' }
    ]} optionValue='name'/>

fruits当用户同时选择两个选项时,将为该字段生成json像这样

  'fruits': ['apples','pears']

我想在显示它List使用ChipField它需要source我没有,因为JSON是一个普通的字符串数组。

如果json看起来像是,源将是“名称” fruits:[{'name':'apples'}, {'name':'pears'}]

           <ArrayField source='fruits'>
                <SingleFieldList>
                    <ChipField source='???' />  
                </SingleFieldList>
            </ArrayField>

如何使用ChipField OR显示纯字符串数组的内容,或者如何告诉我CheckboxGroupInput生成对象数组而不是字符串数组?

查看更多

查看更多

提问者
elsni
被浏览
60
elsni 2020-02-03 17:28

查看演示代码总是一个好主意。我设法SimpleChipField通过修改ChipFieldreact-admin演示代码中的自定义来创建一个自定义组件整个显示record为标签。

import React from 'react';
import Chip from '@material-ui/core/Chip';
import { makeStyles } from '@material-ui/core';

const useStyles = makeStyles({
    main: {
        display: 'flex',
        flexWrap: 'wrap',
        marginTop: -8,
        marginBottom: -8,
    },
    chip: { margin: 4 },
});

const SimpleChipField = ({ record }) => {
    const classes = useStyles();

    return record ? (
        <span className={classes.main}>
            <Chip
                key={record}
                className={classes.chip}
                label={record}
            />
        </span>
    ) : null;
};

SimpleChipField.defaultProps = {
    addLabel: true,
};

export default SimpleChipField;

要使用它,只需放置它而不是常规ChipField

    <ArrayField source="fruits">
        <SingleFieldList>
            <SimpleChipField />
        </SingleFieldList>
    </ArrayField>