You need to enable JavaScript to run this app. 如何在react-admin中基于另一筛选输入实现联动筛选功能
优惠活动
大模型
产品
解决方案
定价
更多

如何在react-admin中基于另一筛选输入实现联动筛选功能

react-admin 关联筛选输入实现问题

我正在使用react-admin,尝试为列表添加筛选选项。我的需求是实现按组织和项目筛选列表,由于项目与组织关联,因此我希望仅在选中组织后才启用项目选择框,且选项仅展示与选中组织关联的项目。

现有实现代码

const ProjectInputs = () => {
    const { values } = useFormState();
    const translate = useTranslate();
    const classes = useStyles();

    return (
        <ReferenceInput
            label={translate("resources.projects.name", { smart_count: 1 })}
            source="projectId"
            reference="projects"
            filter={{ organizationId: values.organizationId }}
            disabled={!values.organizationId}
            alwaysOn
            variant="standard"
        >
            <SelectInput
                optionText="name"
                resettable
                alwaysOn
            />
        </ReferenceInput>
    );
}
export const PaymentFilter: FC<Omit<FilterProps, 'children'>> = props => {
const classes = useFilterStyles();
return (
    <Filter {...props}>
        <ReferenceInput
            source="organizationId"
            reference="organizations"
            variant="standard"
        >
            <AutocompleteInput
                optionText={(choice?: Organization) =>
                    choice?.id // 空选项为 { id: '' }
                        ? `${choice.name}`
                        : ''
                }
            />
        </ReferenceInput>
        <ProjectInputs />
    </Filter>
);
};

现存问题

上述代码可正常运行,但存在以下问题:

  • 无法将项目输入框设置为始终显示
  • 添加筛选按钮中该输入项无名称,仅显示空白收缩区域
  • 项目输入框位置错乱,会突兀弹出
  • 选中该筛选条件后无法将其关闭

请问有没有可行的解决方案?该如何修复这些问题?是否需要采用其他思路实现该需求?


问题更新

我按照@doctoragon的方案进行了调整,目前功能符合预期:项目输入框不会出现在添加筛选的可选列表中,仅在选中组织时显示,取消选中组织时自动隐藏。

该效果符合我的需求,但第二个输入框仍存在样式异常:该输入框位置比其他所有输入框都偏高,选中选项后取消按钮会被选中内容覆盖。
选择项目前的项目输入框
选择项目后的项目输入框


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 22:24:06