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
相关产品推荐
相关产品推荐

