我希望仅在记录具有特定属性时才在Tab
内显示TabbedShowLayout
。我尝试创建一个自定义组件,如下所示:
const EventsTab = ({...props, record}) => {
return record && record.hasEvents &&
<Tab label="Tab2">
test
</Tab>
}
然后将其添加到Show
布局中:
<Show {...props}>
<TabbedShowLayout>
<Tab label="Tab1">
<MetricsComp {...props} />
</Tab>
<EventsTab {...props}/>
</TabbedShowLayout>
</Show>
但是我收到以下错误:uncaught at finalize Invariant Violation: EventsTab(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.
Admin-on-rest
允许条件呈现组件(如How to access record's internals in Show/Edit/Create),但不允许Tab
。有没有解决方法?
答案 0 :(得分:2)
我们必须做类似的事情 - 很遗憾,我们无法访问>base64 <my_image> | jq -R '{image: .}' | http https://<api_gw_url>/dev/upload 'Authorization:Bearer <my_auth_token>'
中的记录,但我们已经在Show
。因此,我们决定使用TabbedShowLayout
的render()创建自定义TabbbedShowLayout
,如下所示:
TabbedShowLayout
答案 1 :(得分:1)
我不确定,我可能会冒昧,但你组件EventsTab基本上会返回一个布尔值,而不是一个有效的反应组件。以下是您要找的内容吗?
const EventsTab = ({...props, record}) => {
return record ? record.hasEvents ?
(<Tab label="Tab2">
test
</Tab>): null: null
}