Field/Input 标签基于反应管理中的记录
Field/Input label based on record in react admin
我希望将部分记录包含在 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 中。我在这里做错了什么?
我有同样的问题,我无法在"Show"页面上显示基于字段值的标签。
从 react-admin 源代码来看,似乎只有我在 "SimpleShowLayout" 或 "TabbedShowLayout" 的直接子级上设置 "addLabel" 道具,然后我才能在我的自定义字段上看到标签。
但它不可配置,我想 show/hide 根据字段的值进行标记。我是否需要实现自己的自定义 "SimpleShowLayout" 或 "TabbedShowLayout"?或者有什么更好的方法吗?
更新我的post。
我只是通过实施如下所示的 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 };
我希望将部分记录包含在 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 中。我在这里做错了什么?
我有同样的问题,我无法在"Show"页面上显示基于字段值的标签。 从 react-admin 源代码来看,似乎只有我在 "SimpleShowLayout" 或 "TabbedShowLayout" 的直接子级上设置 "addLabel" 道具,然后我才能在我的自定义字段上看到标签。
但它不可配置,我想 show/hide 根据字段的值进行标记。我是否需要实现自己的自定义 "SimpleShowLayout" 或 "TabbedShowLayout"?或者有什么更好的方法吗?
更新我的post。 我只是通过实施如下所示的 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 };