admin-on-rest中FormTab组件翻译异常问题求助
问题分析与解决方案
首先看你代码里的两个关键问题,这正是导致标签页标题为空和翻译警告的原因:
1. 组件名称大小写不匹配
你定义的自定义标签页组件是MyCustomFormtab(最后一个字母t为小写),但在EditComponent里使用的是<MyCustomFormTab />(最后一个字母T为大写)。在React/JSX中,组件名称是严格大小写敏感的,这种不一致会导致React无法正确识别你的自定义组件,进而无法读取你设置的label属性,最终触发"Missing translation for key: undefined"的警告。
2. 自定义组件未传递必要props
你的自定义组件在渲染FormTab时,没有将接收的props传递下去,而FormTab需要admin-on-rest提供的上下文属性(比如翻译函数translate)来处理标签标题的渲染逻辑。
修正后的代码如下:
const EditComponent = props => ( <Edit {...props}> <TabbedForm> <FormTab label="tab Title" /> <FormTab label="Other Tab Title" /> <MyCustomFormTab /> {/* 组件名与定义保持大小写一致 */} </TabbedForm> </Edit> ) // 统一组件名称大小写,并传递props给内部的FormTab const MyCustomFormTab = props => ( <FormTab label="My Custom tab Title" {...props} /> )
修正后的效果说明
- 组件名称统一后,React能正确渲染你的自定义
FormTab,读取到你设置的label值,翻译系统就能找到对应的key,不会再出现undefined的警告。 - 传递
{...props}确保FormTab获取到admin-on-rest的上下文属性,保证标签标题能被正确处理(即使你用的是硬编码字符串,这一步也能避免潜在的上下文缺失问题)。
如果修正后仍有问题,可以检查翻译配置文件是否包含这些标签标题对应的key,但根据你描述的前两个标签正常的情况,上述两个问题就是核心诱因。
内容的提问来源于stack exchange,提问作者BaptWaels
相关产品推荐
相关产品推荐

