You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Admin v4.2.4中ReferenceManyField返回全部数据问题排查

React-Admin v4.2.4 ReferenceManyField 显示全部数据的问题解决

错误原因

你把ReferenceManyField嵌套在了List组件内部,这是核心问题:

  • 在Edit页面上下文里,List组件会忽略当前编辑记录的ID,直接发起对richieste_merce_dettagli资源的全量查询,而非基于当前记录的id做关联筛选。
  • ReferenceManyField本身就能在Edit/Show页面直接使用,它会自动从页面上下文(比如Edit的当前记录ID)获取源字段值,再去关联查询目标资源的匹配数据,不需要额外套List组件。

修改后的组件代码

export const RichiestaMerceModifica = () => {
    return (
        <Edit actions={false} resource="richieste_merce_intestazioni">
            <SimpleForm toolbar={<CustomToolbar />}>
                <ReferenceManyField reference="richieste_merce_dettagli" target="id_rm" source="id">
                    <Datagrid>
                        <TextField source="id_rm" />
                        <ReferenceField source="id_prod" reference="prodotti_acquisto" label="Prodotto">
                            <TextField source="nome" />
                        </ReferenceField>
                        <ReferenceField source="id_prod" reference="prodotti_acquisto" label="Descrizione" link={false}>
                            <TextField source="descr" />
                        </ReferenceField>
                        <TextField source="qta" label="Q.ta" />
                        <ReferenceField reference="prodotti_acquisto" source="id_prod" label="Imp. unitario" link={false}>
                            <FunctionField render={record => `${record.imp} €`} />
                        </ReferenceField>
                        <BooleanField source="ordinato" />
                    </Datagrid>
                </ReferenceManyField>
            </SimpleForm>
        </Edit>
    );
}

补充说明

移除包裹ReferenceManyField的List组件后,它会正确读取当前Edit页面的记录id,发起类似richieste_merce_dettagli?id_rm=5的查询,从而只返回与当前ID匹配的关联数据。Datagrid已经足够提供表格展示能力,无需额外的List容器。

内容的提问来源于stack exchange,提问作者chattago2002

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:27:28