1

我有一个表格,显示两个实体 Brand 和 Distribution 之间的多对多关系。我通过品牌页面中的 CheckboxGroupInput 组件显示分布。在表单编辑(编辑组件)期间,我设法预先检查了之前在创建(创建)期间检查过的分布(这在文档中没有指定),但我无法检查或取消选中任何分布。

这是版本形式:

export class BrandEdit extends Component {

    constructor(props) {
            super(props)
            this.state = {
                isLoading: true
            }
    }

    componentDidMount() {

        //Find all distributions
        restClient(GET_MANY, 'distribution', {
            sort: {field: 'name', order: 'ASC'}
        })
            .then(response => {
                return restClient(GET_ONE, 'brand', {
                    id: this.props.match.params.id
                }).then(brandResult => {
                    let distributionsIds = []
                    brandResult.data.distributions.forEach(distribution => {
                        distributionsIds.push(distribution.id)
                    })
                    this.setState({
                        distributions: response.data,
                        distribution_checked_ids: distributionsIds,
                        isLoading: false,
                    })
                });
            })
    }

    render() {
        const { isLoading, distributions, distribution_checked } = this.state
        return (
            <div>
                {
                <Edit {...this.props}>
                    <SimpleForm>
                        <DisabledInput source="id"/>
                        <TextInput label="Nom" source="name"/>
                        <CheckboxGroupInput
                            source="distributions"
                            input={{
                                value: this.state.distribution_checked_ids,
                                onChange: (checkedDistributionIds) => {
                                    this.setState({ distribution_checked_ids: checkedDistributionIds });
                                }
                            }}
                            choices={distributions}
                            optionValue="id"
                            optionText="name"
                        />
                    </SimpleForm>
                </Edit>
                }
            </div>
        );
    }
}

有任何想法吗 ?

谢谢

4

2 回答 2

1

我们需要将 Distribution id 数组传递给组件,而不是 Distribution 对象数组。

这是组件:

<CheckboxGroupInput
    source="distributions"
    choices={distributions}
    optionValue="id"
    optionText="name"
/>

数据应如下所示:

{
 "id": 2115,
 "name": "Test",
 "distributions": [12, 13, 14]
}
于 2017-05-31T16:02:58.980 回答
0

请移除input道具。为什么要自己处理表单状态?AOR 使用 redux-form 来处理它。

于 2017-05-30T15:13:10.627 回答