我希望记录的一部分包含在BooleanField(和BooleanInput)的标签中。我正在尝试使用WithProps完成此操作。
如果我使用
<BooleanField source="FileSystem" label="FileSystem" />
这似乎很好。如果可以,我会尝试包装它
const makeLabel = (props)=>{
let label = `Filesystem for ${props.record.id}`;
return {label};
}
const withLabel = withProps(makeLabel);
const BooleanFieldWithLabel = compose(withLabel)((props)=>{
console.log("props after compose",props);
return <BooleanField {...props}/>
});
然后使用<BooleanFieldWithLabel source="FileSystem" />
它不会呈现任何标签。我尝试了几种不同的方法,尽管在console.log中可以看到正确的标签位于props中,但似乎没有任何效果。我在这里做什么错了?
答案 0 :(得分:0)
我有同样的问题,我无法在“显示”页面上基于字段的值显示标签。 从react-admin源代码来看,似乎只有我在“ SimpleShowLayout”或“ TabbedShowLayout”的直接子级上设置“ addLabel”道具,然后我才能在自定义字段上看到标签。
更新我的帖子。 我只是通过实现以下HOC来找出解决方案。我想知道是否有更好的方法来实现相同的功能?
import React from "react";
import get from "lodash/get";
import { TextField, DateField, Labeled } from "react-admin";
const NullableField = WrappedComponent => props => {
const { record, source } = props;
const value = get(record, source);
return value ? (
<Labeled {...props}>
<WrappedComponent {...props} />
</Labeled>
) : null;
};
const NullableTextField = NullableField(TextField);
const NullableDateField = NullableField(DateField);
export { NullableTextField, NullableDateField };